web-dev-qa-db-ja.com

Haskell / GHCiで関数の定義を表示するにはどうすればよいですか?

私はGHC 6でHaskell 2010.1.0.0.1を使用しています。入力:t GHCiプロンプトで関数名を入力すると、関数のタイプが表示されます。関数定義も表示する方法はありますか?

49
franco hades

現在はありません。

あなたが望むものに最も近いコマンドは:info

:情報名...

指定された名前に関する情報を表示します。たとえば、nameがクラスの場合、クラスメソッドとそのタイプが出力されます。 nameが型コンストラクタの場合、その定義が出力されます。 nameが関数の場合、その型が出力されます。名前がソースファイルからロードされている場合、GHCiはソース内のその定義の場所も表示します。

タイプとクラスの場合、GHCiはそれらに言及するインスタンスも要約します。関連性のない情報が表示されないようにするため、インスタンスは、(a)ヘッドが名前について言及している場合、および(b):loadまたは:モジュールコマンド。

そのようです:

Prelude> :info ($)
($) :: (a -> b) -> a -> b   -- Defined in GHC.Base
infixr 0 $

ただし、Haddageツールで生成された識別子のソースをHackageで確認できます。

  1. ハッキング時にモジュールを検索
  2. ソースリンクをクリック

「?src」is #haskell IRCチャネル上で、lambdabotの有効なコマンドであり、期待どおりの動作をすることに注意してください。

> ?src ($)
> f $ x = f x
40
Don Stewart

そうは思いません。 :iを使用して、もう少し情報を得ることができます(中置演算子やデータ構造などにさらに役立ちます)。ただし、定義はできません。

ghci> :i repeat
repeat :: a -> [a]       -- Defined in GHC.List

hoogle を使用して、標準ライブラリ関数のドキュメントをすばやく見つけることができます。右側には、ソースに移動するためのリンクがあります。それでも、まだ数回クリックするだけです。

6
luqui

いいえ、できません。 Haskellの初心者ができるいくつかの楽しいこと:

  • HTMLのハドックドキュメントで、[ソース]をクリックします...ソースを調べます。
  • :browseモジュールによってエクスポートされたすべての定義を検索します
  • 使用する :help明らかな結果
  • hoogle のWebインターフェースを使用して機能を検索するか、hoogleをローカルにインストールしてください!
  • 利益!
6