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

San*_*lar 0 haskell ghci haskell-mode

使用:tI 可以打印表达式的类型。但是我如何查看该类型的构造函数呢?emacs 的 Haskell 模式下是否有快捷方式?

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

一般来说,无需查看文档即可查看打印类型定义的最简单方法是什么。

Mik*_*elF 5

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

\n\n
>>> :i Either\ndata Either a b = Left a | Right b  -- Defined in \xe2\x80\x98Data.Either\xe2\x80\x99\n... plus all of Either\'s instances\n
Run Code Online (Sandbox Code Playgroud)\n\n

来自GHCi 文档

\n\n
\n

: 信息名称...

\n\n

显示有关给定名称的信息。例如,如果name是 class,则将打印类方法及其类型;if\n name是类型构造函数,则将打印其定义;如果 name是一个函数,那么将打印它的类型。如果名称已从源文件加载,则 GHCi 还将显示其定义在源中的位置。

\n
\n\n

Emacs 中的 Haskell 模式有haskell-process-do-info源代码),Emacs 上的 Haskell 教程建议为此设置键绑定C-c C-n C-i

\n\n
(defun haskell-process-do-info (&optional prompt-value) \n  "Print info on the identifier at point.\nIf PROMPT-VALUE is non-nil, request identifier via mini-buffer."\n...\n)\n
Run Code Online (Sandbox Code Playgroud)\n