0.2.8 • Published 8 years ago
flow-static-land v0.2.8
Features
- statically type checked by Flow
- PureScript-like standard library
- static land compatible
The idea (faking higher kinded types in Flow) is based on the paper Lightweight higher-kinded polymorphism and elm-brands.
Example
import * as maybe from 'flow-static-land/lib/Maybe'
import * as arr from 'flow-static-land/lib/Arr'
const f = (n) => n * 2
const g = (n) => n + 1
// functor
maybe.map(f, maybe.Nothing) // => null
maybe.map(f, maybe.of(3)) // => 6
const a1 = arr.inj([f, g])
const a2 = arr.inj([1, 2, 3])
// applicative
arr.ap(a1, a2) // => [2, 4, 6, 2, 3, 4]Statically type checked
maybe.map(f, maybe.of('s'))Error
maybe.map(f, maybe.of('s'))
^^^^^^^^^^^^^ call of method `of`
const f = (n) => n * 2
^ string. This type is incompatible with
const f = (n) => n * 2
^^^^^ numberRelated libraries
Related blog posts
More examples
examples directory:
- a Signal library (purescript-signal porting)
- a QuickCheck library (purescript-quickcheck partial porting)
Setup
npm install flow-static-land --saveBabel config
{
"presets": ["es2015"],
"plugins" : [
"syntax-flow",
"transform-flow-strip-types",
"transform-class-properties"
]
}License
The MIT License (MIT)