--- date: 2025-07-03 18:34 --- #memo 幽霊型含む、カスタムのコンストラクターを書こうとすると名前空間の問題が出てくる 二重インクルードの問題とかもあるので、先に分割コンパイルの仕組みを整える方がいい? 型の環境の中に変数解決が必要になってくる 内部的には幽霊、Opaque、バリアントで分かれててもいいかもな ```rust enum Variant{ Phantom(Symbol), Opaque(Symbol,TypeNodeId), Union(Box,Box) } enum Type{ ... Variant(Variant) } ``` Foldでネストするくらいなら`Vec>`に収められるかな? パーサーとASTとしてはmatch節も加えないと意味ない で、型推論に加えなきゃいけないコードは、 - 型コンストラクタを関数として使えるように型→値環境に追加し、App式の評価で使えるように - match式の型推論 matchのコード生成がジャンプテーブルとか出てくるとめんどくさいんだよなあ