A Gentle Introduction to Haskell: Classes によると、 fmap 関数は以前につかった map 関数を一般化したものです。 map と言えば、リストの各要素に対して関数を適用するための関数。例えば、リストの要素を 2 倍したいときは、 print $ map (* 2) $ [1,2,3,4,5] -- [2,4,6,8,10] map がリストのためにあるのに対し、fmap は自分で作成した代数的データ型に対して、map のように各要素に関数を適用するためにあるようだ。今回、以前に定義したシンプルな Iremono 型 を少し変更し、これに適用できるようにしてみる。 Iremono a 型の定義を以下のように変更。 data Iremono a = Iremono [a] deriving (Show,Eq) 前回は Iremono 型のフィールド
プログラミングやってないと、調子でないですよね。ひさしぶりに、Haskell。fmapという関数の存在を知りました。そのまえに、ふつうのmapについて。Rubyをはじめ、いろんな言語に標準搭載されているので、詳しく書きません。 こんな型。 map :: (a -> b) -> [a] -> [b] 使ってみる。succは、1足す関数です。 > map succ [1,2,3] [2,3,4] 本題。fmapの型。Functorがわかってません。 fmap :: (Functor f) => (a -> b) -> f a -> f b リストに対して使ってみる。リストもFunctorらしいですよ。 > fmap succ [1,2,3] [2,3,4] MaybeでもOKらしいです。 > fmap succ $ Just 1 Just 2 ここまでは、いいんです。問題は、2番目の引数に関数
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く