我无法在列表中获取第一个float元素。到目前为止我做了什么(完全没用,也许):
get_float( _, F ) :- float( F ).
get_float( [ First | Rest ], F ) :-
get_float( Rest, F ).
给我这个:
some_pred( P ) :-
get_float( SomeList, FloatNumber ),
writeln( FloatNumber ). % --> prints a stack position
答案 0 :(得分:3)
问题是你的第一个案例根本没有检查列表。试试这个:
get_float([F|_], F) :- float(F).
否则你走在正确的轨道上。
答案 1 :(得分:1)
逻辑应该是:
看起来你正试图在你的第二个谓词中做#2。你的第一个谓词看起来试图做#1,但没有测试看到F是列表的第一个元素。
答案 2 :(得分:1)
试试这个
get_float([], _).
get_float( [ First | Rest ], F ) :-
(float(First), F = First);
get_float( Rest, F ).