0

我对prolog真的很陌生,我必须编写一个谓词,它接受一个字符串和一个整数,并写出该字符串的与整数值一样多的字符。我怎样才能做到这一点 ?例子:

myPredicate('Hello',4). %will write out 'Hell'
myPredicate('New in prolog',6). %will write out 'New in' 
4

1 回答 1

1

format它是执行格式化输出的适当谓词,但它不提供值的截断。然后你可以定义一个服务谓词,比如 print_n/2:

6 ?- [user].
|: print_n(W,N) :- sub_atom(W,0,N,_,S),write(S).
% user://1 compiled 0.04 sec, 2 clauses
true.

7 ?- print_n(hello,3).
hel
true.

然后 format/2 可以通过@调用您的服务谓词:

8 ?- format('hello ~@~n', [print_n(world,3)]).
hello wor
true.
于 2013-09-22T19:26:18.340 回答