Need help with flow-static-land?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

gcanti
415 Stars 21 Forks MIT License 124 Commits 10 Opened issues

Description

[DEPRECATED, please check out fp-ts] Implementation of common algebraic types in JavaScript + Flow

Services available

!
?

Need anything else?

Contributors list

# 9,221
React
TypeScr...
flex
Redux
119 commits
# 206,343
PureScr...
Shell
Dart
Flutter
1 commit
# 636,600
HTML
CSS
1 commit
# 198,185
GraphQL
Haskell
viml
Neovim
1 commit
# 1,044
TypeScr...
Babel
Electro...
ESLint
1 commit

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
                 ^^^^^ number

Related libraries

Related blog posts

More examples

examples
directory:

Setup

npm install flow-static-land --save

Babel config

{
  "presets": ["es2015"],
  "plugins" : [
    "syntax-flow",
    "transform-flow-strip-types",
    "transform-class-properties"
  ]
}

License

The MIT License (MIT)

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.