【问题标题】:Question about predicates in prolog with an example关于prolog中谓词的问题并举个例子
【发布时间】:2019-04-01 23:43:22
【问题描述】:

如果我有

highbmi(bmi>=25).
highbmi(bmi=<29.9)
has_bmi(person,27).
needscheckup(X):-has_bmi(X,bmi>=25).

我有正确的想法吗?我是新手,但我希望它能够看到这个人的 bmi 为 27,需要检查。请帮忙,不胜感激。

【问题讨论】:

    标签: prolog


    【解决方案1】:

    Prolog 中的变量以大写字母或下划线开头。此外,Prolog 不是函数式语言,因此诸如bmi&gt;=25 之类的谓词参数不会被评估为函数调用。试试吧:

    high_bmi(BMI) :-
       25 =< BMI, BMI =< 29.9.
    
    has_bmi(john_doe, 27).
    has_bmi(jane_doe, 18).
    
    needs_checkup(Person) :-
        has_bmi(Person, BMI),
        high_bmi(BMI).
    

    示例调用:

    | ?- needs_checkup(Person).
    
    Person = john_doe ? ;
    no
    
    | ?- needs_checkup(jane_doe).
    no
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多