defmodule Linear do def list?([]), do: true def list?([_|t]), do: list?(t) def list?(_), do: false def foldl([], acc, _fun), do: acc def foldl([h|t], acc, fun), do: foldl(t, fun.(h, acc), fun) def foldr([], acc, _fun), do: acc def foldr([h|t], acc, fun), do: fun.(h, foldr(t, acc, fun)) # 一般的な言語では、 # 以下に示す関数群は左畳み込みで実装されていると思います。 def reverse(list) when is_list(list) do foldl(list, [], fn x, acc -> [