Ошибка исключения Erlang - нет списков соответствия функциональных предложений: карта - что мне не хватает? - PullRequest
2 голосов
/ 26 сентября 2011

Я работаю над Euler 8. После небольшого чтения я решил, что использование функции карты решит проблему для меня.Собрав простую тестовую программу, чтобы убедиться, что я понял, что концепции не оправдались.

Внутри оболочки.

1> List = {3, 1, 4}.
{3,1,4}

2> io:format("oh my ~w ~n", [List]).
oh my {3,1,4}
ok

3> lists:map(fun (Z) -> Z * Z end , List).
** exception error: no function clause matching
                    lists:map(#Fun<erl_eval.6.80247286>,{3,1,4})

Я вижу веселье и список в сообщении.Какую концепцию я здесь упускаю?

Ответы [ 2 ]

11 голосов
/ 26 сентября 2011

Ваш список на самом деле является кортежем. {} для кортежей, [] для списков.

Ваш пример должен быть:

1> List = [3,1,4].
[3,1,4]
2> lists:map(fun(Z) -> Z*Z end, List).
[9,1,16]
4 голосов
/ 26 сентября 2011

Вы пытаетесь применить функцию lists:map к кортежу.Инициируйте List = [3,1,4] не как List = {3,1,4} и примените ту же функцию, вы получите желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...