我有一个清单
[-r,-R,-f,-i,-p]
我的测试用例是使用DCG检查列表中是否存在该元素
atom_codes('-R',X), phrase(cp_list(Y),X).
Y='-R' or the ASCII Code
我在Prolog
中实现了这一点% Use after stripping the '-' symbol from an atom
sub_element([],[]).
sub_element(X,[S|Y]):-
X = [H|T],
sub_atom(H, 1, 1, _, S),
member(S,[r,f,i,p,'R']),
sub_element(T,Y).
我将如何使用DCG实现此目的。
答案 0 :(得分:1)
交互式控制台测试:
{
"query": {
"multi_match": {
"type": "cross_fields",
"query": "bart developer",
"operator": "or",
"fields": [
"fullname",
"tagging.tag.name"
],
"fuzziness": 0
}
}
}
虽然可重复使用的代码可能是:
?- phrase(("-",("r"|"R"|"f"|"i"|"p")), `-R`).
true
此类代码使用SWI-Prolog v.7进行测试,请注意带有反引号的代码列表。
OT:我对你的sub_element / 2的评论感到困惑:?- [user].
flag --> "-", [C], {memberchk(C, `rRfip`)}.
?- phrase(flag, `-R`).
true.
似乎要求你不要剥去破折号...