Fun(たのしい)言語
たのしいので
FunctionalのFunでもありたい
静的型付き
型推論をつける
以下が参考になりそう。理論だけ見ても私の頭ではよくわかんないので実装寄り
他にも何か見つけたら追加する
もちろんパイプライン演算子も
コードの雰囲気
code:Fun
data Expr
= Int : Int -> Int -> Expr
| Add : Int -> Int -> Expr
| Mul : Int -> Int -> Expr
let eval = \e ->
case e of
Int n ->
n
Add l r ->
eval l + eval r
Mul l r ->
eval l * eval r
let main =
-- 42 + 9 * 2
Add (Int 42) (Mul (Int 9) (Int 2))
|> eval
letとlet recを別にする?
少なくともトップレベルのletはこの方針で行っても問題なさそう
実際前に書いた型推論でトップレベルの関数定義をfix (\f -> body)として扱ってみたけど動いてた
シンプルなコードだったからだと思うけど
何か問題があったら別の方針にする
型クラスも実装したい