再帰しますよ
Haskellには、繰り返しの構文がないので、再帰で繰り返します。
再帰とは、自分で自分を呼んじゃいます。
ここでは、リストを反転させるreverse関数を作ってみましょう。ただ、reverse関数は、定義されているのでmyreverseになりますが。
myreverse [ ] = [ ] myreverse ( x:xs ) = (myreverse xs ) ++ [x]
Haskellは引数で条件判断のようなことができます。上のmyreverseは、空のリストが来たら、それをそのまま返します。下のmyreverseは、リストの先頭と残りにわけ、最初に残りのリストにmyreverseを適用したものに、リストの先頭だけのリストを結合します。++はリストとリストを結合する演算子です。
もし、下のmyreverseだけだったら、ずっとループしてしまいますが、リストが空のときのmyreverseを定義することで、関数がどんどん適用されていくことになります。
再帰は終わらす定義が重要。じゃないと無限ループにはまってしまいます。