minu('-').
minu('+').
minu('/').
f(A):-
atom_chars(A,X),
write(X),
fun(X).
fun([]).
fun([A]):-
not(minu(A)).
fun([Hd|Tail]):-
not(minu(Hd)),
fun(Tail).
我正在尝试创建一个带有字符串的函数“f”,如果“ - ”,“+”或“/”不在其中,则返回True。
但是一旦我使用递归调用。它只是返回false。
编辑::
解决方案发现::
谢谢你,潜伏者...谢谢你,Daniel Lyons ...... 我很抱歉这是一个漫长的一天学习Prolog ...我应该去睡觉。
f(A):-
atom_chars(A,X),
write(X),
fun(X).
fun([]).
fun([A]):-
not(minu(A)).
fun([Hd|Tail]):-
not(minu(Hd)),
fun(Tail).
答案 0 :(得分:2)
我试试这个:
minu('-').
minu('+').
minu('/').
f(A) :-
atom_chars(A, Chars),
\+ (minu(Op), memberchk(Op, Chars)).
顺便说一句,重要的是要注意Prolog不会“返回”任何东西;如果目标成功与否,它会告诉你true
或false
,例如:
?- f("this is a string").
true.
?- f("this i-a string").
false.
?- f("this i+a string").
false.