Hi Ryan, I am really enjoying your series of articles about fp-ts. The pragmatic approach and real life usecases help a lot. I'd like to give the following feedback and would be interested to see your views on that: in your examples across the series you are importing from fp-ts/lib/ , but that one is the commonjs version. Wouldn't it be more flexible to import from fp-ts instead and rely on the main and module entry point in the package.json for fp-ts to locate the best version, e.g. import * as A from 'fp-ts/Array' import { pipe } from 'fp-ts/function' ... in the pipe examples you chose a version of the operators that accepts the array as a parameter. This looks a bit asymmetric to the subsequent operators that use the raw transformer function. I wonder why you chose this style instead of e.g. import * as A from 'fp-ts/Array' import { pipe } from 'fp-ts/function' const foo = [ 1 , 2 , 3 , 4 , 5 ] const sum = pipe( foo, A.map( ( x ) => x - 1 ), A.filter( ( x ) => x % 2 === 0 ), A.reduce( 0 , ( prev, next ) => prev + next), ) console .log(sum) // 6 -