如何在 GHCi 中插入反引号?

How can I insert a backtick in GHCi?

我正在 Windows 上的 GHCi 中试用 Haskell。在我接下来的教程中,函数名称用反引号括起来:x `mod` 7。但是,我在GHCi中无法输入字符。

反引号字符的 ASCII 值为 096,但 GHCI 不允许 A​​lt + number 插入任何字符。 Copying/pasting 也不行。我该怎么办?

如果您的键盘没有反引号,我不知道如何向 ghci 发送反引号。但这个小技术问题不应该阻止您尝试 Haskell!

  • 您可以使用 f a b 而不是 a `f` b 在没有反引号的 Haskell 中编程。在您的示例中,mod x 7.

  • 您可以将键盘布局设置为美式键盘布局以进行编程。虽然在物理键盘上找到带有错误标签的键需要一些练习,但让 []{} 更容易访问会很方便,在你的情况下,根本没有反引号。

  • 您可以从剪贴板粘贴反引号。 (从命令window的设置中激活"quick-edit mode"和"paste mode",然后用鼠标右键粘贴)。

  • 也许在命令 window 周围使用包装器有帮助?我有时使用 Console2,有时在 Emacs 中使用 M-x shell

  • 也许 WinGHCi 有帮助?它至少支持复制和粘贴。

  • 请参阅 Ørjan Johansen 的回答,了解如何向 ghci 添加自定义键绑定。

祝你好运 Haskell!

@Toxaris 在他的回答中给出了几个建议,但在评论中他还提到了配置 GHCi 版本的 readline 的可能性(称为 haskeline). And indead it allows custom keybindings。所以我决定测试一下。

文档说将自定义项放在 ~/.haskeline 中,这不是 Windows 路径,但它可能会转换为任何目录 System.Directory.getHomeDirectory 中的 .haskeline returns。 (vim 也可以直接在 Windows 上编辑那个路径,但我后来才知道。)所以我在 C:\Users\Ørjan\.haskeline 中添加了以下内容:

bind: meta-' `

现在我可以通过按 alt-' 在 GHCi 中获得 ` !