【问题标题】:Is there a way to see the list of functions in a module, in GHCI?有没有办法在 GHCI 中查看模块中的函数列表?
【发布时间】:2009-11-09 03:23:24
【问题描述】:

我发现它在 Python 或 Common Lisp 中很方便,您可以在运行时列出库的内容。 Haskell 是否有相同的功能,尤其是在 GHCI 提示符下?

【问题讨论】:

    标签: haskell


    【解决方案1】:

    GHCi 有一个:browse 命令来列出模块的内容:

    Prelude> :browse Data.List
    (\\) :: (Eq a) => [a] -> [a] -> [a]
    delete :: (Eq a) => a -> [a] -> [a]
    deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
    deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
    elemIndex :: (Eq a) => a -> [a] -> Maybe Int
    ...
    Prelude> :help                    
    ...
       :browse[!] [[*]<mod>]       display the names defined by module <mod>
                                   (!: more details; *: all top-level names)
    ...
    

    【讨论】:

      【解决方案2】:

      取决于您打算提取的确切信息...如果您的 GHCi 版本支持制表符补全,那么您可以使用它来列出命名空间的所有可用功能:

      Prelude> :m +Data.List
      Prelude Data.List> Data.List.<PRESS TAB KEY HERE>
      Display all 109 possibilities? (y or n) <PRESS n>
      Prelude Data.List> Data.List.un<PRESS TAB KEY HERE>
      Data.List.unfoldr  Data.List.unlines  Data.List.unzip3   Data.List.unzip6   
      Data.List.union    Data.List.unwords  Data.List.unzip4   Data.List.unzip7   
      Data.List.unionBy  Data.List.unzip    Data.List.unzip5   
      

      【讨论】:

      • 在当前的 ghci(s) :m +Data.List 中已弃用。
      • @EliuX 什么是不推荐的做法?
      • @user239558 据我所知,不推荐使用旧语法。但是,最近添加了一些替代语法:在模块中允许的熟悉的 import 语句在 ghci 中也允许。所以也可以写import Data.List。我怀疑 EliuX 知道将这种语法添加到 ghci 并假设旧语法已被弃用,但我不认为这是正确的。事实上,没有import 语句与 ghci 的 :m * 语法具有相同的效果,后者经常使用(即使只是隐式使用),所以 :m 被弃用确实令人惊讶。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      相关资源
      最近更新 更多