lmntal / lavit

LMNtal IDE

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

demo/unif.lmn の num 制約のバグ

sano-jin opened this issue · comments

commented

demo/unif.lmn の num 制約のバグ

プログラムの修正自体は非常に簡単にできるので,新入生に github に慣れるためにやってもらうのが良いかも.

概要

lavitの demo/unif.lmn をコンパイルしようとすると以下のエラーが出る

COMPILE ERROR: unary type process context must occur in LHS

原因

s7@@subst(!V,T) :- num(!V,1), ground(T) | lock.

ここで,

num(!V, 1)

としているが,おそらく現仕様だと

num(!V) =:= 1 

としなくてはいけない(テストしてください).

修正案

同上

Discussion

hyperlink に関する仕様は
https://www.ueda.info.waseda.ac.jp/lmntal/index.php?Hyperlinks
にまとめられている.

どうもこれをみた感じ,

$x = num(!H)

で新しい変数(プロセス文脈)に代入するような仕様になっている.

普通の制約だと,すでに $x が定義されていた場合は(代入ではなく)等価性比較ができるようになっている気がするが,どうやら num の場合はそうもいかないようだ?

この問題に関しては,

  1. そもそもどういう仕様にするべきか
  2. (仕様を決めたら)その仕様を周知するべき(公開ページなどで?)
  3. (仕様を決めたら)その仕様をコンパイラ又は実行時処理系に実装するべき

という感じでちゃんと考えようとすると結構色々ある.

lmntal-compiler の issue にも投げておくのが良いかもしれない(必要に応じてやってください).