冗長でも非効率でも、文法が長ったらしくなっても、実装のシンプルさのみを優先する
Readable Codeを読め
型理論やプログラミング言語設計分野においては呼称がありそうですが、適当にでっち上げる。
Node: 式 と 値
コンテナ型: 他の式や値を含み得る値
Struct
Vec
値(Value): 評価するとそれ自身となるnode
1
[2 "hello"]
式(Exp): 評価することでそれ自身とはならないnode
(+ 1 2)
(let a = 10 a)
プリミティブ値(Primitive): 0
, 1
, "hello"
, false
, <Num as value>
型: Num
, Bool
, [Num Num]
, {...Str}
, Vec2
複合値(Complex): Vec
, Dict
, Struct
の値を含む複合的な値
インスタンス値: 1
, "hello"
, false
, []
, [1 2]
, {a:1}
, (Vec2 0 0)
複合インスタンス値
インスタンス値かつ複合値。要素をつないだ星座のようなイメージ。
複合型
実引数, 仮引数
リテラル(Literal): パーサーが直接吐く可能性のある式の種類
EFn
, EVec
なども含む展開(Expand)
((=> [x:Num]
(+ ~x ~x) 10) を展開すると
(+ 10 10)`