4

私は Haskell の初心者で、最新の GHCi 2011.2.0.1 を使用しています。私が頻繁に直面するフラストレーションの 1 つは、インターネットや書籍の例 (公式の haskell.org サイトからでも、たとえばhttp://www.haskell.org/haskellwiki/State_Monadの example-2 など) がコンパイルされないことが非常に多いことです。そして、何が問題なのかを突き止めるには、何回か探して質問を投稿する必要があります。RWH ブックの例の一部でさえ機能しません。

これは haskell または haskell-platform の新しいバージョンの問題ですか? 言語/プラットフォームが開発中で不安定なのか、それとも例だけが古いのか? いずれにせよ、新入生が学ぶべき正しい例を見つけるための最良の方法は何ですか?

より具体的には、上記の状態モナドの例を修正するのを手伝ってもらえますか?

4

1 に答える 1

9

この場合の問題はState、Monad Transformer Library の最新バージョンでコンストラクターが削除されていることです。Stateの定義での使用を に置き換えるgetNextstate、プログラムは問題なく動作します。(これは、Stateが として再定義されたためですStateT Identity。つまり、恒等モナドに対する状態モナド変換子が削除されたため、個別のデータ型が削除されました。これが何を意味するのかわからなくても、心配する必要はありません。単に次のことを意味するだけです。表示Statestateれるたびに置き換える必要があります。)

Web または RWH の既存の例に関する問題のほとんどは、単純にライブラリの新しいバージョンが原因です。(RWH の例の主な問題は、Parsec の例が Parsec 2 用に書かれていることだと思います。Parsec 3 はかなり変更されているため、少なくともいくつかのインポートを追加する必要があるでしょう。)

一般に、Haskell は最新の有用なリソースが十分にないという問題を抱えています。その HaskellWiki ページはメンテナンスされていないようです。(HaskellWiki は実際には haskell.org の公式サイトですが、ページはユーザーによって作成および維持されているため、何かが wiki にあるからといって、必ずしも最新または高品質であるとは限りません。)

削除された Monad Transformer Library リリースStateは 2010 年 10 月にリリースされたものなので、新しいバージョンで動作しないコードがまだたくさんあるのは残念です。ありがたいことに、修正は簡単です。

于 2012-01-26T05:20:27.223 に答える