• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:lilfesがよく分からない)

Lilfes言語の型定義についての質問

このQ&Aのポイント
  • 私は自然言語処理に興味があり、lilfesという言語に関心を持ちました。
  • lilfesのユーザーマニュアルを読んでいる中で、型定義について分からないことがあります。
  • 具体的には、AVM木を使用して型を表示するために行った操作の結果が予想と異なっていました。

質問者が選んだベストアンサー

  • ベストアンサー
  • mogella
  • ベストアンサー率100% (1/1)
回答No.2

> person <- [bot] + [NAME\string]. でNAMEに入る型がstringであると定義しているにもかかわらず > string <- [bot]. でstringの型をbotと定義しているので期待した表示が出なくなります。 なので > :- printAVM(person & NAME\string). の"string"の型がstringであると定義すればよいので > person <- [bot] + [NAME\string]. > str <- [string]. > :- printAVM(person & NAME\str). |~person ~| |_NAME:str_| とすればうまく表示されます。

yamada11
質問者

お礼

回答ありがとうございます。返事が遅れまして大変申し訳ございません。 上記の通りしたら、確かに表示されました。ありがとうございます。 stringの型はlilfesに元々既にある型であるということなのですね・・・。 すいません、また分からないことがあれば質問すると思います。 回答してくださった方々、ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

まずそもそも printAVM はその様に型を受け取る述語ではありません。 例えば :- printAVM(person & NAME\"hoge"). の様に使う訳、です。 また string <- [bot] というのがまずい様です。 その一行を消して見てください。 以下のようにおそらく(?)予想通りの答えが出る、と思います。 $ lilfes > person <- [bot] + [NAME\string]. > :- printAVM(person & NAME\"hoge"). |~person ~| |_NAME:"hoge"_| > string という型で使いたいのにもかかわらず bot にしてしまっては、printAVMはそもそも上記のように使うものなので、string を入れようとすると怒られてしまう羽目になる訳、です。

yamada11
質問者

お礼

回答ありがとうございます。返事が遅れまして大変申し訳ございません。 その後、自分でも試行錯誤してみましたところ、 $ lilfes > john <- [bot]. > ken <- [bot]. > person <- [bot] + [EMPLOYER\, EMPLOYEE\ken]. > :- printAVM(person & EMPLOYER\john、EMPLOYEE\ken). |~person ~| |_EMPLOYER:john_| |_EMPLOYEE:john_| > と表示されました。 回答通りしたところ同じように表示されました。 しかし、このprintAVMは値を与えなければ、もしや表示されないということなのでしょうか・・・。

yamada11
質問者

補足

すいません。お礼の表示で間違いが・・・。 |~person ~| |_EMPLOYER:john_| |_EMPLOYEE:john_| ではなく |~person ~| |_EMPLOYER:john_| |_EMPLOYEE:ken_| でした。

すると、全ての回答が全文表示されます。

関連するQ&A