DEV Community

Discussion on: Practical Guide to Fp-ts P6: The Do Notation

 
ryanleecode profile image
Ryan Lee

Maybe this is what you're talking about?

github.com/gcanti/fp-ts-contrib/bl...

The extra plumbing is just a map operation to keep variables in context. If you want to do it manually here's what it does under the hood.

pipe(
  O.some(5),
  O.chain((a) =>
    pipe(
      O.none as O.Option<number>,
      O.map((b) => ({ a, b })),
    ),
  ),
  O.chain(({ a, b }) =>
    pipe(
      O.some(6),
      O.map((c) => a + b + c),
    ),
  ),
)

Enter fullscreen mode Exit fullscreen mode