首页 > 解决方案 > 如何提取数据以在 Prolog 中列出?

问题描述

我有L某种类型的数组,我正在尝试将数据提取到数组中,例如:

L=[day(sunday),day(monday)]

Target=[sunday,monday]

尝试使用forall并在 Prolog 列表中搜索相关问题。

extract_data_to_list(L,Target) :-
    member(day(Day),L),
    length(L, L1),
    length(Target, L1),
    member(Day,Target).

电流输出:

?- extract_data_to_list([day(sunday),day(monday)],Target).
Target = [sunday, _5448] ;
Target = [_5442, sunday] ;
Target = [monday, _5448] ;
Target = [_5442, monday].

期望的输出:

?- extract_data_to_list([day(sunday),day(monday)],Target).
Target=[sunday,monday]

标签: listprolog

解决方案


这是一个理想的问题maplist

day_name(day(DayName), DayName).

dates_daylist(Dates, DayList) :-
    maplist(day_name, Dates, DayList).

Maplist 适用于和day_name中的每一对对应的元素。DatesDayList


推荐阅读