邦書の二大 Haskell 学習書を読み終えたら次は何を読めば良いのか? に対する偉大な先達のご意見。 途中から流れが Haskell の doctest の話題になっています。
これまで GHC では、スタックトレースを取ることが有効なデバッグ方法ではなかった。 なぜなら遅延評価では、(再帰であってもなくても)末尾呼び出しは単なるジャンプになるから、スタックを使わないのである。スタックに戻る場所を積むのは、case と of の中で評価される式だけだ。(つまり、ここは正格に評価される。) この問題を解決するために GHC 7.4.2 から、わざわざスタックにログを残して、スタックトレースが取れるようになった。すなわち、最新の Haskell Platform をインストールしていれば、この機能を使えるということだ。 例として、以下のプログラムを考えよう。 module Main where main :: IO () main = print $ foo 3 + 1 foo :: Int -> Int foo x = x * 2 + bar x bar :: In
恥ずかしながら。ごく最近までHaskellにUnitTestのライブラリがあるのを知りませんでした。恥ずかしい。 調べてみたところ、思ったよりも簡単にUnitTestを書けることがわかったので、ちょっとまとめてみました。 間違いありましたらご指摘いただけるとたいへんありがたいです。 詳細についてはリファレンスをあたってみてください。 Test.HUnit Test.HUnit.Base Test.HUnit.Text HUnitのインポート HUnitを使うにはTest.HUnitモジュールをインポートします。 import Test.HUnit GHCiで利用するばあい。 $ ghci Prelude> :m Test.HUnit Prelude Test.HUnit> アサーション アサーションは基本的に、常に失敗、Falseのとき失敗、不一致のとき失敗、の3種類です。それぞれ通常の関
Haskellでの BDD を実践するとどうなるかを考えるためのメモ。 型 豊かなデータ型とセクシーな型システムを持つ Haskell では、型が以下のような意味を持つ。 仕様 保守性の向上 簡単なドキュメント 設計図 BDD では、テストの用語ではなく設計の用語を使ってテストを記述する。だから Haskell で、まず型を書く習慣があれば、ある意味 BDD を実践していると言える。この感覚は、他の言語のプログラマには分からないかもしれない。 fromList :: Ord a => [a] -> Set a fromList = undefined このコードはコンパイルを通過するので、型に関する誤りがないことを確かめられる。 僕はへなちょこなので、型を先に書くこともあれば、後から書くこともある。 単純なコードはさっさと実装したい 型は GHC に推測させて、ghc-mod で自動挿入す
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く