0

Prolog でツリーを操作しています。ツリー ノードは、Left-NodeValue-Rightまたはnilの形式をとる項を使用して表されます。優先順位を強制するために、丸括弧が使用されます。木 (nil-5+nil)-3+nil と nil-5+(nil-3+nil) は明らかに異なるため、丸括弧が重要であることに注意してください。私の質問は次のとおりです。ブラケットをどのように処理しますか?

私が試した解決策の 1 つは、concat_atom(+List,-Atom) を使用することでした。しかし、式 [(,nil,)] は明らかにエラーとなり、['(',nil,')'] は (nil) ではなくアトム '(nil)' を生成します。

助言がありますか?ありがとう!

4

1 に答える 1

2

そもそも、なぜそんな変わった表現を選んだのですか?のような三項項で内部ノードを表す方がはるかに適切と思われますnode(Left, Value, Right)。代わりに として表しますが-(-(Left, Value), Right)、これは少し不適切に思えます。あなたの質問に関して:優先順位を強制するには、用語を書き留めるときに単に括弧を使用してください。プロローグのトップレベルは、用語を「正しい」方法で回答に自動的に出力します。concat_atom/2 を使用する必要はないと思います。または、ある場合は、用語を直接入力できない理由を説明してください。

于 2012-04-30T14:33:43.820 に答える