I find it handy in Python or Common Lisp that you can list a library's contents at runtime. Does Haskell have the same thing, in particular from a GHCI prompt?
Is there a way to see the list of functions in a module, in GHCI?
GHCi has a :browse
command to list the contents of modules:
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)
...
Depending on exactly what information you intend to extract... If your version of GHCi supports tab-completion, then you can use that to list all of a namespace's available functions:
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
@Kinder what's the undeprecated thing to do? –
Speckle
@Speckle As far as I know, the old syntax is not deprecated. However, there is some recently added alternative syntax: the familiar
import
statements allowed in modules are also allowed in ghci. So one could also write import Data.List
. I suspect EliuX knew about the addition of this syntax to ghci and assumed that the old syntax was deprecated, but I don't believe that to be correct. Indeed, there is no import
statement that has the same effect as ghci's :m *
syntax, which is frequently used (even if only implicitly), so it would be surprising indeed for :m
to be deprecated. –
Dhoti © 2022 - 2024 — McMap. All rights reserved.
:m +Data.List
its deprecated. – Kinder