我似乎无法让我的if else声明工作.
male(john).
male(fred).
male(harry).
female(mary).
female(julie).
female(susan).
female(anne).
hasblonde(X):-(male(X),X = john);(female(X),X = susan);(female(X),X = julie).
hasdarkhair(X):-(male(X),X = harry);(male(X),X = fred).
hasbrunette(X):-(female(X),X = mary);(female(X),X = anne).
isrich(X):-(female(julie),X=julie);(male(fred),X=fred).
likes(male(X),female(Y));likes(female(X),male(Y)):-likes(X,Y).
likes(X,Y):-
((X==julie)->
((hasdarkhair(Y))->
(female(X), male(Y));
male(X));
female(X),male(Y));
((X==julie)->
((isrich(Y))->
(female(X), male(Y));
male(X));
female(X),male(Y));
((X=mary)->
((hasdarkhair(Y))->
(female(X), male(Y));
male(X));
female(X),male(Y));
((X=john)->
((isrich(Y))->
(female(X), male(Y));
female(X));
male(X),female(Y));
((X=harry)->
((isrich(Y))->
(female(X), male(Y));
female(X));
male(X),female(Y));
((X=fred)->
((hasbrunette(Y))->
(female(X), male(Y));
female(X));
male(X),female(Y)).
Run Code Online (Sandbox Code Playgroud)
我想(Statement) - >(如果是,则运行此语句);(如果为false则运行此语句).是Prolog的正确方法.无论我写什么,为什么会这样
likes(MaleName,FemaleName)
likes(FemaleName,MaleName)
Run Code Online (Sandbox Code Playgroud)
它返回true?
我想改写这个
//finds the max of 3 numbers
let max3 (n1, n2, n3) = let mx1 = if (n1 > n2) then n1 else n2 in if (mx1 > n3) then mx1 else n3;
Run Code Online (Sandbox Code Playgroud)
不使用"in"
我想出了这个
let max3 (n1, n2, n3) =
let mx1 =
if (n1 > n2)
then n1
else n2
let mx2=
if (mx1 > n3)
then mx1
else n3;;
Run Code Online (Sandbox Code Playgroud)
说,未完成,并期待一个表达.
不知道为什么.mx2是为了获得更高的集合值并将其移动到其范围内的下一个函数.
我也希望能够这样做,以便我不使用任何let表达式.请理解这种语言的任何帮助都非常友好
编辑:任何人都可以回答我的问题吗?在F#中使用任何let表达式也可能出现这样的问题吗?