リテラルが用意されていない値を直に格納するためのAstとして俺が定義した。
結論: 必要。
全ての値を、それ自身に評価されるAstに逆変換(toAst)できるとは限らない。
こういう値の toAst は、Ast.obj(value) でOK。
Unit, Top, Bottom も Ast.obj に包みたいところだけど、そこは LUnit, LTop, LBottom と別で定義すべき。
Enumは? Struct は?
これは関数適用式にするほか無いのでは。
false
の toAST は (Bool "false")
を返す。あるいは、Bool.false
。