Files
quartz-research-note/content/mimiumでのバリアント.md

1.0 KiB

date
date
2025-07-03 18:34

#memo

幽霊型含む、カスタムのコンストラクターを書こうとすると名前空間の問題が出てくる

二重インクルードの問題とかもあるので、先に分割コンパイルの仕組みを整える方がいい?

型の環境の中に変数解決が必要になってくる

内部的には幽霊、Opaque、バリアントで分かれててもいいかもな

enum Variant{
	Phantom(Symbol),
	Opaque(Symbol,TypeNodeId),
	Union(Box<Self>,Box<Self>)
}
enum Type{
	...
	
	Variant(Variant)
}

FoldでネストするくらいならVec<Box<Self>>に収められるかな?

パーサーとASTとしてはmatch節も加えないと意味ない

で、型推論に加えなきゃいけないコードは、

  • 型コンストラクタを関数として使えるように型→値環境に追加し、App式の評価で使えるように
  • match式の型推論

matchのコード生成がジャンプテーブルとか出てくるとめんどくさいんだよなあ