私は今、Erlang とリスト内包表記を学んでいて、奇妙な (私の場合) 問題を発見しました。したがって、単純な式を使用し、フィルターを使用しない単純なリスト内包表記があります。
gen_list(List)->
[N*N || N <- List].
私が期待したように、出力は正しいです:gen_list([2,3,4]). [4,9,16]
次に、これを行います:
gen_list(List)->
[N*N*N*N || N <- List].
そして、出力は再び正しいです: gen_list([2,3,4]). [16,81,256]
. しかし、数式を次のように定義すると、gen_list(List)->
[N*N*N || N <- List].
次の出力が得られました: gen_list([2,3,4]). "\b\e@"
.
これは何ですか: "\b\e@"
?? Nが3つしかないのはなぜですか?次のような数式を書くこともできます: N*N*N*N*N*N*N*N
、出力は再び期待どおりになります。しかし、NI が 3 つである場合、常にこのような奇妙な結果が得られます。誰かが私のためにこれを説明できますか?
ArchLinux と GNU Emacs を使用しています。