是否有任何方法可以获取Haskell中模块的信息?

是否有任何方法可以获取Haskell中模块的信息?,haskell,module,Haskell,Module,我不知道法姆做什么。所以我想得到一些关于它的信息 通过使用:t和:i,我们将分别获得变量的类型和实例的信息。有什么方法可以获取模块的信息吗?模块没有类型,它只是导出声明。如果您想查看它导出的声明(以非单击已有链接的方式),请在GHCi中加载模块并浏览它 例如,我将您的FAM模块保存在我的tmp目录中,以便我可以将其加载到GHCi中: module FAM where 现在,我可以使用browse请求模块导出的声明,要么让模块保持隐式(:browse),要么指定我感兴趣的模块(:browse F

我不知道法姆做什么。所以我想得到一些关于它的信息


通过使用
:t
:i
,我们将分别获得变量的类型和实例的信息。有什么方法可以获取模块的信息吗?

模块没有类型,它只是导出声明。如果您想查看它导出的声明(以非单击已有链接的方式),请在GHCi中加载模块并浏览它

例如,我将您的FAM模块保存在我的tmp目录中,以便我可以将其加载到GHCi中:

module FAM where
现在,我可以使用browse请求模块导出的声明,要么让模块保持隐式(
:browse
),要么指定我感兴趣的模块(
:browse FAM
),这在加载多个模块时很有用。例如:

% ghci /tmp/FAM.hs
GHCi, version 8.4.1: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /Users/tommd/.ghci
[1 of 1] Compiling FAM              ( /tmp/FAM.hs, interpreted )
Ok, one module loaded.
*FAM>

从这里,您可以检查模块导出的类型、类和函数。

尝试:浏览FAM我收到一条错误消息
找不到模块“FAM”,它不是当前程序或任何已知包中的模块。
我也尝试了
:浏览数据。同样的错误,FAM模块在哪里?它是独立文件吗?在阴谋集团的包裹里?我会先尝试编译它并加载到GHCi中。我还尝试生成haddock文档。它来自我的
*FAM> :browse FAM
fmap_List :: (a -> b) -> [a] -> [b]
fmap_Maybe :: (a -> b) -> Maybe a -> Maybe b
fmap_Either :: (a -> b) -> Either e a -> Either e b
data BinTree a = BTNil | BTNode a (BinTree a) (BinTree a)
map2_List :: (a -> b -> c) -> [a] -> [b] -> [c]
map2_Maybe :: (a -> b -> c) -> Maybe a -> Maybe b -> Maybe c
map2_Either ::
  (a -> b -> c) -> Either e a -> Either e b -> Either e c
ap_List :: [a -> b] -> [a] -> [b]
map2_Listv2 :: (a -> b -> c) -> [a] -> [b] -> [c]
map3_List :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
addRecip :: Double -> Double -> Maybe Double
bind_Maybe :: Maybe a -> (a -> Maybe b) -> Maybe b
bind_Either :: Either e a -> (a -> Either e b) -> Either e b
bind_List :: [a] -> (a -> [b]) -> [b]
data IntranetRecord = I Integer String
data BBRecord = B Integer String
data MarkUsRecord = M String String
myJoin :: [IntranetRecord] -> [BBRecord] -> [MarkUsRecord]
myJoin2 :: [IntranetRecord] -> [BBRecord] -> [MarkUsRecord]
foldM :: Monad m => (b -> a -> m b) -> b -> [a] -> m b
newtype State s a = StateOf (s -> (s, a))
deState :: State s a -> s -> (s, a)
put :: s -> State s ()
get :: State s s
statefulSum :: [Integer] -> State Integer Integer
toyCheck :: IO Bool
class Monad f => MonadToyCheck (f :: * -> *) where
  toyGetChar :: f Char
  {-# MINIMAL toyGetChar #-}
toyCheck2 :: MonadToyCheck f => f Bool
realProgram :: IO Bool
newtype Feeder a = F (String -> (String, a))
unF :: Feeder a -> String -> (String, a)
testToyChecker2 :: String -> Bool