Prolog 列表转换
Prolog lists transforming
我想将列表转换成这种格式:
C=[via(A,B,C,D),via(G,T,H,U),via(J,O,L,P)]
进入以下:
F=[(C,D),(H,U),(L,P)]
F的字母对应C的字母
可能是这样的:
transform([], []).
transform([via(_, _, X, Y)|T)], [(X, Y)|TT) :-
transform(T, TT).
几个 Prolog(比如我在这里使用的 SWI-Prolog,在库中(apply))有映射列表:
1 ?- [user].
|: transform(via(_,_,C,D),(C,D)).
(ctrl+D here)
true.
2 ?- X = [via(A,B,C,D),via(G,T,H,U),via(J,O,L,P)], maplist(transform,X,Y).
X = [via(A, B, C, D), via(G, T, H, U), via(J, O, L, P)],
Y = [ (C, D), (H, U), (L, P)].
使用 library(lambda)
归结为:
..., maplist(\via(_,_,X,Y)^(X,Y)^true, C, F), ...
我想将列表转换成这种格式:
C=[via(A,B,C,D),via(G,T,H,U),via(J,O,L,P)]
进入以下:
F=[(C,D),(H,U),(L,P)]
F的字母对应C的字母
可能是这样的:
transform([], []).
transform([via(_, _, X, Y)|T)], [(X, Y)|TT) :-
transform(T, TT).
几个 Prolog(比如我在这里使用的 SWI-Prolog,在库中(apply))有映射列表:
1 ?- [user].
|: transform(via(_,_,C,D),(C,D)).
(ctrl+D here)
true.
2 ?- X = [via(A,B,C,D),via(G,T,H,U),via(J,O,L,P)], maplist(transform,X,Y).
X = [via(A, B, C, D), via(G, T, H, U), via(J, O, L, P)],
Y = [ (C, D), (H, U), (L, P)].
使用 library(lambda)
归结为:
..., maplist(\via(_,_,X,Y)^(X,Y)^true, C, F), ...