2016-01-18 2 views
3

Я пытаюсь узнать Erlang и не получил не дальше, чем операторы, когда я столкнулся с проблемой:Начиная Erlang: Одд Результат от бэр

5> TheList = [2,4,6,8]. 
[2,4,6,8] 
6> 
6> [N || N <- TheList, N rem 3 =:= 0]. 
[6] 
7> 
7> TheList. 
[2,4,6,8] 
8> 
8> [2*N || N <- TheList, N rem 3 =:= 0]. 
"\f" 
9> 

Почему я получаю «\ п» в последней операции? Разве это не должно быть [12]? Что означает «\ f»? Благодарю.

+1

использовать оболочку: строки (ложные) и получить ожидаемый результат. Это происходит из-за того, что «\ f» совпадает с [$ \ f], которое есть [12]. –

+2

Возможный дубликат [списки Erlang с одиночными номерами более 8?] (Http://stackoverflow.com/questions/7371955/erlang-lists-with-single-numbers-over-8) – legoscia

+0

И, возможно, [это] (http: //stackoverflow.com/q/26425435/113848), [это] (http://stackoverflow.com/q/25978873/113848), [это] (http://stackoverflow.com/q/20792966/113848) и [this] (http://stackoverflow.com/questions/2348087/can-i-disable-printing-lists-of-small-integers-as-strings-in-erlang-shell). (Связывание их, чтобы привести их к вершине [частого списка вопросов Erlang] (http://stackoverflow.com/questions/tagged/erlang?sort=frequent&pageSize=30)) – legoscia

ответ

4

Это объясняется here, например:

Erlang не имеет отдельного строкового типа. Строки обычно представлены списками целых чисел (а строковый модуль стандартной библиотеки управляет такими списками). Каждое целое число представляет значение ASCII (или другого набора символов) символа в строке. Для удобства, строка символов, заключенных в двойных кавычках (") эквивалентно список числовых значений этих символов

Вы можете использовать io:format функции:.

1> io:format("~w~n", [[2*N || N <- [2,4,6,8], N rem 3 =:= 0]]). 
[12] 

или disble этого поведения с shell:strings/1 функции начиная с Erlang R16B:

2> shell:strings(false). 
true 
3> [2*N || N <- [2,4,6,8], N rem 3 =:= 0]. 
[12] 
+0

Очень информативный ответ. Спасибо P_A. – ElToro1966

0

Как @Atomic_alarm отметил в комментариях, это связанно с Эрл распечатывания ответа, используя строку Synt ax, а не список целых чисел. Значение по умолчанию - true, где, как показано на рисунке [12], вы хотите, чтобы значение было установлено как false. Документация для него: here.

+0

Получил это llam_g, спасибо. – ElToro1966

Смежные вопросы