2

プレリュードから関数のソースを取得できます。

lambdabot> src foldr
foldr f z []     = z
foldr f z (x:xs) = f x (foldr f z xs)

しかし、他のモジュールからソースを取得できません:

lambdabot> src flatten
Source not found. Maybe if you used more than just two fingers...
lambdabot> hoogle flatten
Data.Tree flatten :: Tree a -> [a]
Data.Graph flattenSCC :: SCC vertex -> [vertex]
Data.Graph flattenSCCs :: [SCC a] -> [a]
lambdabot> src Data.Tree flatten
Source not found. Just try something else.
lambdabot> src Data.Tree.flatten
Source not found. Have you considered trying to match wits with a rutabaga?
lambdabot> src Tree flatten
Source not found. And you call yourself a Rocket Scientist!
lambdabot> src Tree.flatten
Source not found. Just try something else.

これどうやってするの?

4

1 に答える 1

2

あなたは本当にこれを行うことはできません. ラムダボットは、名前からソースへのマッピングでいっぱいのハードワイヤード ファイルを使用します。特に原則的な方法で識別子のソースを検索するわけではありません。

一般的にできる最善の方法は:i foo、識別子がどのモジュールからのものかを ghci で調べてから、そのモジュールのソースを検索することです (たとえば Hoogle を使用すると、通常はソース リンクのあるページにリンクされます)。

于 2013-01-21T03:46:30.023 に答える