Haskell

"例外は共有の秘密である"

Exceptions are shared secrets | Existential Type の内容が興味深かったので試訳してみました。 It's quite obvious to me that the treatment of exceptions in Haskell is wrong. Setting aside the example I gave before of an outright unsoundness, …

IOがコンテナでありFunctorでもあるということ その1

モナドは「プログラム可能コンテナ」(by kazu_yamamotoさん, モナモナ言わないモナド入門 第2版)である、という考え方でIOを理解しようとしてみたのでちょっと書いてみる。 fmapとjoinによるモナドの定義 Haskell 2010でのMonadクラスの定義は class Monad m…

Haskellの foldr と foldl と foldl'

前の記事で、Haskellでfoldlを使った場合の動作について書きました。 Haskellの評価戦略とfoldl/foldr (1) Haskellの評価戦略とfoldl/foldr (2) ここで、Haskellでfoldlを実際に使ってみて動作を確認してみようと思います。 {- fold1.hs -} import Data.List…

Haskellの評価戦略とfoldl/foldr (2)

前の記事 d:id:linglang:20110909:1315561320 で、 foldl (<+>) (z<+>a0) (a1:[a2,a3,a4,a5,a6]) という式を評価するとき、2通りの簡約(計算)順序があることを示しました。 foldl (<+>) b0 (a1:[a2,a3,a4,a5,a6]) {- 内部簡約 -} foldl (<+>) ((z<+>a0)<+>a1…

Haskellの評価戦略とfoldl/foldr (1)

関数型言語などで再帰を使ってプログラムを書く場合、 末尾再帰はループに最適化されるのでメモリ消費量が少なくなる と、一般には言われます。 が、これは評価戦略によっては成り立たなくなります。 foldlとfoldr リストの内容をある演算子によって畳み込む…