функция карты в Эрланге - PullRequest
6 голосов
/ 18 января 2011

В дополнение к наличию функции карты, доступной для множества арностей (до 4), Prolog позволяет вам (при определенных обстоятельствах) отображать функцию множественной арности в один список.Допустим, вы хотите проверить, является ли «x» членом нескольких списков.Вы можете сделать:

maplist(member(x),[[a,b,c,x],[3,f,s,x]]).

Первый аргумент члена включен, и все это отображается в списке.

Вопрос 1: Доступно ли что-то подобноеЭрланг?Я не могу найти его в документации, но, опять же, я не могу найти его ни в одной документации Prolog.

Вопрос 2: Как использовать карту (и аналогичные функции) снесколько артерий?Сверните свой?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 18 января 2011

Есть lists:map/2, а также список пониманий:

1> lists:map(fun(L) -> lists:member(42,L) end, [[1,5,8,4],[13,42],[7,2,10]]).
[false,true,false]
2> [ lists:member(42,L) || L <- [[1,5,8,4],[13,42],[7,2,10]] ].
[false,true,false]
3 голосов
/ 18 января 2011

Может быть что-то вроде:

23> lists:map(fun(L) -> lists:member(42,L) end, [[1,5,8,4],[13,42],[7,2,10]]).
[false,true,false]
24>
...