ghci (haskell) には、関数が属するモジュール (ロードされたモジュールのうち) を教えてくれるコマンドがあります。たとえば、関数が whichMod と呼ばれる場合、次のように機能します。
Prelude>whichMod take
Prelude
Prelude>whichMod sort
Data.List
: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
どのモジュールからインポートしたかはわかりません。
はい、その機能は存在します:
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> _
Prelude> :info take
take :: Int -> [a] -> [a] -- Defined in `GHC.List'