3

ghci (haskell) には、関数が属するモジュール (ロードされたモジュールのうち) を教えてくれるコマンドがあります。たとえば、関数が whichMod と呼ばれる場合、次のように機能します。

Prelude>whichMod take
Prelude
Prelude>whichMod sort
Data.List
4

3 に答える 3

7

:iコマンド(の略)が必要:infoです。

Prelude> :i take
take :: Int -> [a] -> [a]   -- Defined in GHC.List
Prelude> :i sort

Top level: Not in scope: `sort'
Prelude> :m +Data.List
Prelude Data.List> :i sort
sort :: Ord a => [a] -> [a]     -- Defined in Data.List

ご提案のとおり、関数が現在ロードされているモジュールにある場合にのみ機能します。

関数が最初に定義されたモジュールが通知されることに注意してください。たとえば、 (少なくとも私のコピーのghcでは)でtake定義されていますが、プレリュードから再エクスポートされています。GHC.Listどのモジュールからインポートしたかはわかりません。

于 2012-12-05T11:28:37.863 に答える
6

はい、その機能は存在します:

Prelude> :! hoogle sort
Data.List sort :: Ord a => [a] -> [a]
Data.List sortBy :: (a -> a -> Ordering) -> [a] -> [a]
Data.ByteString sort :: ByteString -> ByteString
Data.ByteString.Char8 sort :: ByteString -> ByteString
Data.Sequence sort :: Ord a => Seq a -> Seq a
package sort-by-pinyin
Data.Sequence sortBy :: (a -> a -> Ordering) -> Seq a -> Seq a
GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a]
package sorty
package cabal-sort
package external-sort
Data.Graph.Inductive.Internal.Heap heapsort :: Ord a => [a] -> [a]
package heapsort
package natural-sort
package NaturalSort
Data.Graph topSort :: Graph -> [Vertex]
Data.Graph.Inductive.Query.DFS topsort :: Graph gr => gr a b -> [Node]
Data.Graph.Inductive.Query.DFS topsort' :: Graph gr => gr a b -> [a]
Data.Sequence unstableSort :: Ord a => Seq a -> Seq a
Data.Sequence unstableSortBy :: (a -> a -> Ordering) -> Seq a -> Seq a
Prelude> _

「~/.ghci」構成ファイルにエイリアスを定義できます

:def hoogle \str -> return $ ":! hoogle \"" ++ str ++ "\""

その後、あなたは書くことができます

Prelude> :hoogle sort
Data.List sort :: Ord a => [a] -> [a]
Data.List sortBy :: (a -> a -> Ordering) -> [a] -> [a]
Data.ByteString sort :: ByteString -> ByteString
Data.ByteString.Char8 sort :: ByteString -> ByteString
Data.Sequence sort :: Ord a => Seq a -> Seq a
package sort-by-pinyin
Data.Sequence sortBy :: (a -> a -> Ordering) -> Seq a -> Seq a
GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a]
package sorty
package cabal-sort
package external-sort
Data.Graph.Inductive.Internal.Heap heapsort :: Ord a => [a] -> [a]
package heapsort
package natural-sort
package NaturalSort
Data.Graph topSort :: Graph -> [Vertex]
Data.Graph.Inductive.Query.DFS topsort :: Graph gr => gr a b -> [Node]
Data.Graph.Inductive.Query.DFS topsort' :: Graph gr => gr a b -> [a]
Data.Sequence unstableSort :: Ord a => Seq a -> Seq a
Data.Sequence unstableSortBy :: (a -> a -> Ordering) -> Seq a -> Seq a
Prelude> _
于 2012-12-05T12:32:42.127 に答える
3
Prelude> :info take
take :: Int -> [a] -> [a]   -- Defined in `GHC.List'
于 2012-12-05T11:28:27.893 に答える