如何在GHCi中打印一个类型的构造函数?

问题描述 投票:0回答:1

使用 :t 我可以打印一个表达式的类型。但我如何看到该类型的构造函数?另外,在emacs的Haskell模式下,有没有一个快捷方式可以实现这个功能?

这似乎是一个基本的东西,但我找不到。也许我只是找错了术语......

一般来说,有什么最简单的方法可以看到打印一个类型的定义,而不需要去看文档。

haskell ghci haskell-mode
1个回答
4
投票

:info,或者只是 :i,是你想要的。

>>> :i Either
data Either a b = Left a | Right b  -- Defined in ‘Data.Either’
... plus all of Either's instances

从... GHCi文件:

:info 名称 ...

显示有关给定名称的信息。例如,如果 名称 是一个类,那么将打印该类的方法和它们的类型;如果 名称 是一个类型构造函数,那么它的定义将被打印出来;如果 名称 是一个函数,那么它的类型将被打印出来。如果 名称 已从源文件中加载,那么GHCi也将在源文件中显示其定义的位置。

Emacs中的Haskell模式有以下功能 haskell-process-do-info (源头),其中一个 Haskell on Emacs教程 建议将钥匙绑定设置为 C-c C-n C-i.

(defun haskell-process-do-info (&optional prompt-value) 
  "Print info on the identifier at point.
If PROMPT-VALUE is non-nil, request identifier via mini-buffer."
...
)
© www.soinside.com 2019 - 2024. All rights reserved.