ふつケルからのメモ書き 高階関数

square n = n * n
map square [1, 2, 3]
[(square 1), (square 2), (square 3)]

concatMap f xs

concatMap expandTab "ab\tcd\n"
concat $ map expandTab "ab\tcd\n"
concat $ [(expandTab 'a'), (expandTab 'b'), (expandTab '\t'), (expandTab 'c'), (expandTab 'd'), (expandTab '\n')]
concat $ [['a'], ['b'], (replicate tabStop ' '), ['c'], ['d'], ['\n']
concat ['a', 'b', " ", ['c'], ['d'], [\n]]
'ab cd\n'

map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs

map f (x:xs) = ((f x) : (map f xs))

: リストを生成する演算子
リストに対するパターンマッチでは(x:xs)がリストを先頭要素とそれ以降のリストに分解
関数定義の中で(y:ys) リストysの先頭にyを追加したリストを作成

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中