Elixir では繰り返しを再帰で行う。例えば、文字列を n 回出力するスクリプトはこんな風になる。
defmodule Recursion do def print_multiple_times(msg, n) when n <= 1 do IO.puts msg end def print_multiple_times(msg, n) do IO.puts msg print_multiple_times(msg, n - 1) end end Recursion.print_multiple_times("Hello!", 3)
^o^ > elixir recursion.exs Hello! Hello! Hello!
リストの場合には [head|tail]
と、終端条件には []
(空リスト)を使えばいい。
defmodule Math do def sum_list([], accum) do accum end def sum_list([head|tail], accum) do sum_list(tail, head + accum) end end IO.puts Math.sum_list([1, 2, 3], 0)
^o^ > elixir sum_list.exs 6
再帰についてはこれくらいでいいだろう。