例によってYAHTの練習問題です。
Define a recursive function my_map that behaves identically to the standard function map
YATH(Yet Another Haskell Tutorial)より, p.31 Ex.3.9
通常のmap関数と同じように振る舞う再帰的関数my_mapを定義しなさい
といったところでしょうか。
僕の回答は以下の通り。
my_map p [] = [] --空のリストの場合は空のリストを返す
my_map p (x:xs) = p x :my_map p xs --先頭要素には渡された関数を適用し、残りの部分は
--自分自身を再帰的に呼び出して処理する
なるほど、解き始めた時点ではいまいちわかってなかったんですが、実際書いてみると納得できますね。
この問題を解いてみて驚いたのは、 p x と書くことで、pが指している関数にxを渡して評価できるんですね。関数を変数のように取り扱えるのが、なんだか不思議な感じでおもしろいです。
また苦労する問題があったら(笑)Haskellネタで更新すると思います。記述に間違ってるところがあったら指摘してください。