[head | tail]の挙動が、いまひとつわからなかった。
しかし、どうもErlang や Elixir の構文では、この概念が重要な気がしたので、ちょっと理解をしようと思う。
リストを作成して、[head | tail]で受けると、リストの先頭と、それ以降が分割される。
[bash]
iex(1)> list = [1,2,3,4,5]
[1, 2, 3, 4, 5]
iex(2)> [head | tail] = list
[1, 2, 3, 4, 5]
iex(3)> head
1
iex(4)> tail
[2, 3, 4, 5]
[/bash]
ちなみに、リストを分割する関数も存在する。
[bash]
iex(5)> hd(list)
1
iex(6)> tl(list)
[2, 3, 4, 5]
[/bash]
この概念は、再帰処理とかで基本になるので、ここで整理しておく。