哪种键盘/键盘布局最适合haskell编程?haskell是否将所有数学符号都作为函数



作为haskell的绝对初学者,我不断阅读关于haskell上的各种文章、pdf和教程。大多数示例/示例代码都包含数学字符。即使是键入的常见任务

->

我必须键入:-&>

事实上,我不知道如何在emacs中键入Math Characters(我用来练习haskell编码)。我当前的键盘布局是"English US"。

是否有任何特定的键盘或键盘布局最适合输入数学符号(用于haskell编程)?

haskell是否将所有数学符号都作为函数?我目前的假设是haskell必须支持所有作为函数的数学符号。

例如+、-、/、*等

Unicode数学符号注:这些符号出现在许多哈斯克尔的论文中。

您不必使用您在论文中看到的花哨的unicode符号来代替→您可以为每个特殊字符编写CCD_ 1等等。考虑到这一点,Haskell完全可以找到一个正常的美国Qwerty布局。

但是,如果您发现→样式更易于阅读(但显然不是更易于键入),您可以让Emacs显示带有这些符号的代码。这完全是表面上的,就像语法高亮显示一样:即使您看到→,源代码仍然有一个->,这仍然是您键入的内容。您可以这样启用:

(setq haskell-font-lock-symbols t)

这种符号模式可能会使某些缩进看起来有点奇怪。不过,我已经用了一段时间了,一点问题都没有。当我的代码使用漂亮的符号代替ASCII代理时,我当然更喜欢看它。

所以你仍然键入->,但它看起来更漂亮。

然而,有时你确实想要像希腊字母这样的花哨符号。例如,如果你正在从一篇论文中实现一个算法,那么保持变量名不变可能是有意义的。为此,您可以通过C-和输入TeX使用Emacs的TeX输入模式。例如,这将允许您键入lambda并获得λ。要查看可以键入的符号的完整列表,请运行M-x describe-input-method,然后输入TeX

最后:Haskell确实支持所有的"数学符号",如+和-作为运算符。事实上,任何由这些字符组成的标识符都是自动中缀的。因此,您可以实际定义自己的运算符。你可以写这样的东西:

a +++ b = a * a + b * b

然后你就可以在中缀位置使用+++函数,就像任何其他操作符一样。我相信Haskell通过查看其Unicode类别来确定哪些字符是"运算符字符",这意味着您可以定义(实际上我已经定义了)->0之类的运算符。

总之:Haskell代码不需要任何特殊的符号——它都可以是ASCII。如果您觉得这些符号易于阅读,您可以让Emacs使用渲染ASCII Haskell代码,并且您实际上可以使用TeX输入模式键入它们。

尽管运算符和函数名支持Unicode,但大多数Haskell代码只使用标准的ASCII字符集(GHC支持语法保留标记使用Unicode,例如->使用::使用-XUnicodeSyntax)。引用Haskell 2010年的报告:

Haskell使用Unicode[2]字符集。然而,源程序目前偏向于早期版本的Haskell中使用的ASCII字符集。

所以我通常会键入->无论如何都要得到箭头。你在论文中发现的"pretified"语法通常不会在实际代码中使用,至少在我的经验中是这样(但无可否认,我在Haskell代码中并没有被广泛阅读)。例如,在论文中,用于附加列表的++算子有时是两个加号重叠的类型集,我看到应用函子的<*>算子类型集为,一个带圆圈的星形算子。但我从未在实际的Haskell代码中看到过这两种情况(前者甚至不是真正的字符),它们也没有在基本库中定义。你经常在论文中看到代替->-XUnicodeSyntax支持这一点;但是,我从来没有在实际的代码中看到过这种情况,尽管我不会那么惊讶。

据我所知,没有一种键盘布局真正支持所有Unicode,甚至只是数学符号(除了支持输入原始十六进制代码)。不过,也有一些编辑器的输入模式可能很方便。例如,有RFC 1345,它为各种有用的字符定义了两个字符序列,并且可以,例如在Emacs中使用C-\并选择rfc1345启用。另一个例子是Emacs用于编辑Agda(一种依赖类型的编程语言)的模式,其中LaTeX(ish)转义被翻译成Unicode字符。

简而言之,答案是最合适的键盘布局是你最熟悉的。哈斯克尔的角色用法并没有什么特别之处,它需要任何不同的东西。

我知道有一种德沃夏克风格是为编程而设计的,但学习新的键盘布局似乎比简单地为你必须按下的新组合建立肌肉记忆更难。

最新更新