haskell ghci有相同的python`dir`吗?

时间:2014-01-12 00:36:14

标签: haskell ghci

haskell dir是否有等效的py ghci

在python解释器中,dir显示已定义的符号。我想在Haskell中使用类似的东西,以便探索导入模块提供的功能。

me@mine$ python
>>> from pickle import *
>>> dir()
['APPEND', 'APPENDS', 'BINFLOAT', 'BINGET', 'BININT', 'BININT1', 'BININT2', 'BINPERSID', 'BINPUT', 'BINSTRING', 'BINUNICODE', 'BUILD', 'DICT', 'DUP', 'EMPTY_DICT', 'EMPTY_LIST', 'EMPTY_TUPLE', 'EXT1', 'EXT2', 'EXT4', 'FALSE', 'FLOAT', 'GET', 'GLOBAL', 'HIGHEST_PROTOCOL', 'INST', 'INT', 'LIST', 'LONG', 'LONG1', 'LONG4', 'LONG_BINGET', 'LONG_BINPUT', 'MARK', 'NEWFALSE', 'NEWOBJ', 'NEWTRUE', 'NONE', 'OBJ', 'PERSID', 'POP', 'POP_MARK', 'PROTO', 'PUT', 'PickleError', 'Pickler', 'PicklingError', 'REDUCE', 'SETITEM', 'SETITEMS', 'SHORT_BINSTRING', 'STOP', 'STRING', 'TRUE', 'TUPLE', 'TUPLE1', 'TUPLE2', 'TUPLE3', 'UNICODE', 'Unpickler', 'UnpicklingError', '__builtins__', '__doc__', '__name__', '__package__', 'dump', 'dumps', 'load', 'loads']

2 个答案:

答案 0 :(得分:3)

AFAIK,Haskell中没有直接等同于dir。如果您只想浏览GHCI中的定义,那么您需要做的就是点击标签。

例如:

ghci> [tab]
Display all 470 possibilities? (y or n) [y]
{spits everything that's currently in scope}

ghci> Prelude.[tab]
Display all 235 possibilities? (y or n) [y]
{spits out everything in the Prelude namespace}

答案 1 :(得分:0)

这总结了您建议的评论中的答案。

您可以在:browse中使用不带参数的ghci命令查看从最近导入的模块导入的所有值。如果您在输入ghci时调用它,它将输出Prelude导入的所有值。您还可以使用:browse <ModuleName>浏览尚未导入的模块。

但是,这不适用于您在ghci中定义的值。要访问这些内容,请使用标签完成功能,例如YellPika建议。