You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SWI-Prolog中functor谓词验证:代码likes(Mary,pizza)是否正确?

关于Prolog中functor谓词匹配的问题解答

首先,likes(Mary,pizza)是一个合法的Prolog项(Term),它的函子是likes,元数是2。但你要验证的是functor(Term, F, A)的匹配逻辑,单独写这个项并不能完成验证——你需要把它作为参数传入functor/3谓词中进行查询。

举几个实际的测试例子:

  • 如果你想确认这个项的函子和元数,直接在Prolog交互环境中执行查询:
    functor(likes(Mary,pizza), F, A).
    
    此时Prolog会返回F = likes, A = 2,说明匹配成功。
  • 反过来,如果你已知函子和元数,也可以用functor/3生成对应的项:
    functor(Term, likes, 2).
    
    Prolog会返回Term = likes(_,_)(_表示匿名变量)。

你单独写likes(Mary,pizza)的话,它只是一个独立的事实(如果是写在Prolog程序里),或者作为查询时会尝试寻找这个事实是否存在,这和验证functor/3的匹配逻辑不是一回事。

内容的提问来源于stack exchange,提问作者Sharmila M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:10:30