3

私は Haskell に比較的慣れていないので、Yesod フレームワークを使用して Web サイトを構築することで、ある程度の経験を積もうとしています。私が現在直面している最大の問題は、ある関数が必要とする型や、別の関数が返す型がよくわからないことです。また、間違いを犯したときに生成される型エラーを解釈するのにも苦労しています。

特に、以下のことができるようになりたいのですが、今のところ良い方法がわかりません。

  • 式が与えられたら、式の型を見つけます。通常、私はGHCiをこのようなものに使用しますが、私が知っている限り、式の各部分がどのパッケージから来ているかを知る必要があり、それを行う方法がわかりません. テンプレート Haskell から生成される HomeR などの関数の種類も確認できるようにしたいと考えています。Yesod プロジェクトの .hs ファイルに表示される任意の式の型をチェックしたり、評価するために GHCi を使用する方法はありますか?
  • 上記と同じ行に沿って、Yesod プロジェクトの .hs ファイルに表示される型またはクラスが与えられた場合、その定義を取得しますか?
  • Yesod の関数または型が与えられた場合、そのドキュメントをすばやく見つけます。私が現在行っているのは、Google で特定の関数を検索することですが、最初の結果が常にドキュメントであるとは限らなかったり、古いバージョンのものである場合があるため、これは少し面倒です。Yesod ドキュメントをすばやく検索する効率的な方法はありますか?
4

2 に答える 2

1

ドキュメントを検索する方法については、すでにいくつかの優れた回答が得られているため、混乱を招く型エラーを処理するためのちょっとしたコツについて触れておきます。

私の間違った機能を多くの小さな機能に分解し、それらをすべてトップレベルで導入すると役立つと思います。問題が単に演算子の優先度の問題であった場合、これですぐに解決する可能性がありますが、より深い問題が存在する場合もあります。

次に、壊れた関数の型注釈を削除し、その定義を に変更してundefined、それを ghci にロードできます。これにより、通常、ghci がコンポーネント関数の正しい型を推測できるようになり、:t でその型を見つけることができます。単純なサブコンポーネント関数の正しい型を持つことは、通常、正しい実装に直接つながります。その後、型注釈を置き換えたり、必要に応じて再構成したりできます。

Haskell を使用して正しいタイプのサブコンポーネントを見つける手助けをするためのより原則的なアプローチがここで示されています: http://matthew.brecknell.net/post/hole-driven-haskell/

于 2013-08-19T17:40:46.413 に答える