generated at
PureScript

JavaScript にコンパイルされる純粋関数型言語
基本はかなり Haskell
f x スタイルの関数適用
foo = bar スタイルの宣言
無名関数 \x -> x + 3
パターンマッチ case ... of ...
Haskellの歴史的経緯によるややこしさなどを整頓した言語という側面もある
Prelude head tail が部分関数で空リストを渡すと死ぬ
PureScriptではそもそもリスト操作関数が Prelude に入ってない。 List.Data.head などはきちんと List a -> Maybe a になっている
map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b が別れてる
map が普通にFunctorを使う
型クラスの継承関係 => が論理記号として正しくない
PureScriptでは逆
Prelude が凄まじくミニマル
Maybe List のような型もない
正格評価される

要点
Haskell との違いを中心に
type hoge = { name :: String }
property accessor functions
\r -> r.name = _.name
operator sections
(3 + _)
>>> <<<
forall r. { name :: String | r } -> String 型は String 型のフィールド name を持つレコードを引数に取る関数