Elixir Enum.filter の結果が変
2019/02/25
Elixirのお勉強を始めました。
初日に早速、???に遭遇。
iexで、
[323, 999, 54] |> Enum.filter(fn(n) -> n > 323 end)
[999]
となるのに、
[323, 999, 54] |> Enum.filter(fn(n) -> n < 323 end)
'6'
になった。[54]以外の答えをまったく想定していなかったので戸惑った!
ちょっと調べたところ、文字のコードポイントとして取り扱われて、その文字列を出力しているようなことが分かった。
(いや、よくわかっていないので、よく理解できたら、後日、追記します。とりあえず、そういう仕様と思うことにしておきます)
[54] == '6'
true
?で文字のコードポイントが確認できる
?6
54
ちなみに、環境は、
Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 10.0.1
Elixir 1.7.3 (compiled with Erlang/OTP 19)
OS:Windows 10 Pro.
追記:
『プログラミング Elixir』の第7章 リストと再帰を読んだら解決。
やはりこの本は必須!