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