2006-06-06から1日間の記事一覧
splitAt3' = flip((flip((flip(map) . flip(map) [take,drop] . flip($)))).flip($) ) *Main> :! type mysplit.hs splitAt' n = flip(map) (flip(map) [take,drop] ($ n)) . flip($) splitAt2' n = (flip(map) . flip(map) [take,drop] . flip($)) n.flip($)…
splitAt2' n = (flip(map) . flip(map) [take,drop] . flip($)) n.flip($) f::(i->(a->b)->c) 、g::(a->b) のとき f(n).g = k(n) となるようなk::(i->c) を作れればいいのかな・・・・・flip(f) g?? 型とにらめっこ。 *Main> :t (flip(map) . flip(map) [t…
Prelude> flip(map) (flip(map) [take,drop] ($ 3)) $ flip($) $ [1..5] [[1,2,3],[4,5]] Prelude> flip(map) (flip(map) [take,drop] ($ 3)) . flip($) $ [1..5] [[1,2,3],[4,5]]*Main> :! type mysplit.hs splitAt' n = flip(map) (flip(map) [take,drop] …
Prelude> map ($ [1..5]) . map ($ 3) . map ($ (take,drop)) $ [fst,snd] [[1,2,3],[4,5]]真似して合成してみたけど[fst,snd]が外に出ちゃった。意味無い。
http://haskell.g.hatena.ne.jp/hyuki/20060605/splitat疑問のところについて考えてみる。 最初に思いついた形 zipWith (\f x -> f x) (zipWith (\f x -> f x) [take,drop] (replicate 2 n)) (replicate 2 xs) 関数適用は$だね zipWith ($) (zipWith ($) [ta…
(take,drop)の形から([a],[a])の形を返すように微調整したバージョン splitAt5' = curry((\[x,y]->(x,y)).(uncurry (flip((flip((flip(map) . flip(map) (map($ take,drop)) [fst,snd]) . flip($)))).flip($))))) 実行結果 *Main> :! type mysplit.hs splitA…