【问题标题】:How can I insert a backtick in GHCi?如何在 GHCi 中插入反引号?
【发布时间】:2015-09-26 19:00:43
【问题描述】:

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

反引号字符的 ASCII 值为 096,但 GHCI 不允许 Alt + number 插入任何字符。复制/粘贴也不起作用。我该怎么办?

【问题讨论】:

  • 有一个意大利语键盘,有一个 \ 左边的 1,对不起
  • 嗯,有一点需要注意的是,反引号从来不是必要的x `mod` 7mod x 7 相同。反引号只是以中缀方式使用函数的一种方式。此外,这些选项听起来不是特别方便,但这里有一些关于在意大利语键盘上输入反引号的信息:superuser.com/questions/598135/…
  • 我猜这更多是键盘布局+终端编码的问题,而不是ghci本身。
  • 毕竟找到了 WinGHCi,(它不在 BIN 映射中,所以不在 PATH 上)并且它可以工作。 @David Young:制定答案,我会将其标记为正确

标签: haskell ghci winghci


【解决方案1】:

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

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

  • 您可以将键盘布局设置为 us-american 以进行编程。虽然需要一些练习才能在物理键盘上找到带有错误标签的键,但让[]{} 更易于访问会很方便,并且在您的情况下,使用反引号完全没有。

  • 您可以从剪贴板粘贴反引号。 (从命令窗口的设置中激活“快速编辑模式”和“粘贴模式”,然后使用鼠标右键粘贴)。

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

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

  • 有关如何将自定义键绑定添加到 ghci,请参阅 Ørjan Johansen 的回答。

祝 Haskell 好运!

【讨论】:

  • Windows 控制台不支持 CTRL-V 进行粘贴(事实上,它根本不支持任何键盘快捷键进行粘贴)——除了在 Windows 10 上,似乎:stackoverflow.com/questions/131955/…
  • 真的吗?多么烦人。我一直在我的 Windows 控制台中使用带有命令提示符的 CTRL-V,但我现在意识到它是由 mridgers.github.io/clink 提供的,而不是原版控制台或命令提示符。对不起,我的困惑。
【解决方案2】:

@Toxaris 在他的回答中给出了一些建议,但在评论中他还提到了配置 GHCi 版本的 readline(称为haskeline)的可能性。并且不死它allows custom keybindings。所以我决定测试一下。

文档说将自定义放在~/.haskeline 中,这不是 Windows 路径,但它可能会转换为 .haskelineSystem.Directory.getHomeDirectory 返回的任何目录中。 (vim 也可以直接在 Windows 上编辑该路径,但我后来才意识到。)所以我在C:\Users\Ørjan\.haskeline 中输入了以下内容:

bind: meta-' `

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

【讨论】:

  • 很抱歉已经给出了正确的答案:你的就是我要找的。将它放在 Windows 调用的 HOMEPATH (c:\users\myname) 中。发送。
  • @Martin 我认为您可以更改您接受的答案。很高兴我们解决了您的问题。
猜你喜欢
  • 2016-07-06
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 2014-11-09
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多