Hacker News new | ask | show | jobs
by cercatrova 1412 days ago
What do people think of fp-ts?
3 comments

I fully recommend this. The fp-ts is quite readable for JavaScript. Combine it with io-ts and you have a robust way of handling user inputs:

    pipe(
      decoder.decode(req.body)
      , E.mapLeft(_ex => new InputValidationError(decoder.decode(req.body)))
      , RTE.fromEither
      , RTE.chain(handleInput)
      , RTE.match(
        error => {
          res.status(500);
          res.send(error)
        },
        result =>  {
          res.send(result)
        }
      )
    )(reader)
That looks interesting, I hadn't heard of the project. Will definitely have a look at the library.

But it defines its pipe function the same way RXJS does, separately for any number of arguments:

  function pipe<A>(a: A): A
  function pipe<A, B>(a: A, ab: (a: A) => B): B
  function pipe<A, B, C>(a: A, ab: (a: A) => B, bc: (b: B) => C): C
  function pipe<A, B, C, D>(a: A, ab: (a: A) => B, bc: (b: B) => C, cd: (c: C) => D): D
  ...
https://github.com/gcanti/fp-ts/blob/master/src/function.ts#...
> But it defines its pipe function the same way RXJS does, separately for any number of arguments

What’s the issue? This has been a common way to do this sort of thing since C++ template meta programming. Have you honestly ever broke the bounds?

There isn't necessarily any issue with it besides maybe not being very maintainable. I just tried to find a generic solution for the fun of it
I really like it, but TypeScript syntax is a bit unreadable with it. I'm used to Scala which looks a lot cleaner with extension methods and collections being immutable by default.