Opt*_*ght 3 keyboard unicode emacs haskell symbols
作为haskell的绝对初学者,我不断阅读有关haskell的各种文章,pdf和教程.大多数示例/示例代码包括数学字符.即使是打字的常见任务
- >
我必须输入: - &>
事实是我不知道如何在emacs中键入数学字符(我用于练习haskell编码).我目前的键盘布局是"英国美国".
是否有任何特定的键盘或键盘布局最适合输入数学符号(用于haskell编程)?
haskell是否将所有Math符号作为函数?我目前的假设是haskell必须支持所有数学符号作为函数.
例如+, - ,/,*等
Unicode Math Symbols 注意:许多haskell论文中都有这些符号.
Tik*_*vis 10
您不必使用您在论文中看到的花哨的unicode符号 - 代替→您可以->为每个特殊字符编写等等.鉴于此,正常的美国Qwerty布局是Haskell的完美发现.
但是,如果您发现→样式更容易阅读(但显然不容易键入),您可以让Emacs显示带有这些符号的代码.这完全是装饰性的,就像语法高亮一样:即使你看到一个→,源代码仍然有一个->,你仍然可以输入.您可以这样启用:
(setq haskell-font-lock-symbols t)
Run Code Online (Sandbox Code Playgroud)
这种符号模式可能会使你的一些缩进看起来有点奇怪.但是,我已经使用了一段时间,并没有任何问题.当我使用漂亮的符号代替ASCII代理时,我当然更喜欢查看我的代码.
所以你仍然打字,->但它看起来更漂亮.
但是,有时候你确实需要像希腊字母这样的花哨符号.例如,如果您正在从纸张实现算法,那么保持变量名称相同可能是有意义的.为此,您可以通过C-\并输入Emacs的TeX输入模式TeX.例如,这将允许您键入\lambda并获取?.要查看可以键入的完整符号列表,请运行M-x describe-input-method然后输入TeX.
最后:哈斯克尔不支持像+所有的"数学符号"和-为运营商.实际上,由这些字符组成的任何标识符都是自动中缀.所以你可以实际定义自己的运算符.你可以这样写:
a +++ b = a * a + b * b
Run Code Online (Sandbox Code Playgroud)
然后你就可以+++在中缀位置使用该函数,就像任何其他运算符一样.我相信Haskell通过查看其Unicode类别来确定哪些字符是"操作符",这意味着您可以定义(实际上已定义)运算符×.
总结:Haskell代码不需要任何特殊符号 - 它们都可以是ASCII.如果您发现它们易于阅读,您可以使Emacs 使用这些符号呈现ASCII Haskell代码,并且您实际上可以使用TeX输入模式键入它们.
最Haskell代码仅使用一组标准的ASCII字符,虽然支持UNICODE为运营商和功能名称(和GHC支持使用Unicode进行语法预留令牌,诸如使用?用于->和?用于::与-XUnicodeSyntax).引用Haskell 2010报告:
Haskell使用Unicode [ 2 ]字符集.但是,源程序目前偏向于早期版本的Haskell中使用的ASCII字符集.
因此,我通常打字->来获取箭头.你在论文中找到的"美化"语法通常不会在实际代码中使用,至少在我的经验中是这样(但我确实在Haskell代码中并没有被广泛阅读).例如,在论文,在++以追加名单运营商有时排版与两个加号重叠,我见过的<*>对应用性仿函数操作排版的?,带圈星操作.但是我从未在实际的Haskell代码中看到过(前者甚至不是真正的字符),并且它们没有在基础库中定义.你经常看到?的地方->在报纸,而这与支持-XUnicodeSyntax; 但同样,我在实际的代码中从未见过,尽管我不会感到惊讶.
我所知道的没有键盘布局真正支持所有Unicode,甚至只是数学符号(除了支持输入原始十六进制代码).但是,编辑器的输入模式可能很方便.例如,有RFC 1345,它定义了各种有用字符的双字符序列,例如可以在Emacs中启用C-\和选择rfc1345.另一个例子是Emacs用于编辑Agda(一种依赖类型的编程语言)的模式,其中LaTeX(ish)转义被转换为Unicode字符.
简而言之,答案是最合适的键盘布局是您最熟悉的.Haskell的角色使用没有什么特别之处,这需要任何不同的东西.