タグ

2015年3月23日のブックマーク (2件)

  • Haskell の畳み込み関数 - foldl, foldr

    1. リストを畳み込む foldl と foldr Haskell のサンプルコードを見ていると、よく見かける foldl と foldr 。名前からして両者は対照的な関数のようだ。 Prelude の List Operation の分類において、 Reducing lists (folds) として、わざわざ分類されているところを見ると、重要な関数なのだろう。 (@_@) そういえば、Reduce と言えば、Python の関数 reduce を思い出した。 Python のリスト内包表記 これと似たものなのかな? 2. どのように計算が行われるのか 「foldr と foldl の違い - 言語ゲーム」によると、foldr, foldl は、以下のように計算が行われる。 foldr (+) 4 [1, 2, 3] -- 1 + (2 + (3 + 4)) == 10 foldl (+

  • All About Monads モナドのすべて

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基