メモ
programParser :: GenParser Char OpTable (CodeTree, OpTable)
...
case (runParser programParser initOpTable codename code) of
Right (codeTree, opTable) ->
...
演算子は関数へのマッピングにするとして、取れる選択肢は、
- 固定演算子/モジュール読み込み関数
- 演算子宣言(コンパイル単位ごと)/モジュール読み込み関数
- モジュール宣言
- 段階的パーズ(入れ子型構造で処理し、実行にはいる直前に中身を処理する)
スクリプト言語形式では、宣言スタイルは順番の解決などで相性がよくない。
そういやPythonって循環importはどうやって処理してるんだっけ。