関数のAST
関係ないところは省略している
code:hs
data Exp
| Var String
| App String Exp
deriving (Eq, Show)
data Pattern
= PVar Name
| PInt Int
| PBool Bool
deriving (Eq, Show)
Elm/CompilerがPCons Pattern Patternな型な理由
PatternMatches.hsでsimplifyしている
Lambda Args Exp
引数に当たる部分にはいろいろなパターンがある
code:hs
f x = ..
f [] = ..
f (x:xs) = ..
f 1 = ..
f True = ..