demo/unif.lmn の num 制約のバグ
sano-jin opened this issue · comments
sano commented
demo/unif.lmn の num 制約のバグ
プログラムの修正自体は非常に簡単にできるので,新入生に github に慣れるためにやってもらうのが良いかも.
概要
lavitの demo/unif.lmn をコンパイルしようとすると以下のエラーが出る
COMPILE ERROR: unary type process context must occur in LHS
原因
Line 47 in eb47f69
ここで,
num(!V, 1)
としているが,おそらく現仕様だと
num(!V) =:= 1
としなくてはいけない(テストしてください).
修正案
同上
Discussion
hyperlink に関する仕様は
https://www.ueda.info.waseda.ac.jp/lmntal/index.php?Hyperlinks
にまとめられている.
どうもこれをみた感じ,
$x = num(!H)
で新しい変数(プロセス文脈)に代入するような仕様になっている.
普通の制約だと,すでに $x
が定義されていた場合は(代入ではなく)等価性比較ができるようになっている気がするが,どうやら num の場合はそうもいかないようだ?
この問題に関しては,
- そもそもどういう仕様にするべきか
- (仕様を決めたら)その仕様を周知するべき(公開ページなどで?)
- (仕様を決めたら)その仕様をコンパイラ又は実行時処理系に実装するべき
という感じでちゃんと考えようとすると結構色々ある.
lmntal-compiler の issue にも投げておくのが良いかもしれない(必要に応じてやってください).