[英]Which KeyBoard / KeyBoard Layout will be most suitable for haskell programming? Does haskell has all Math Symbols as functions?
作為haskell的絕對初學者,我不斷閱讀有關haskell的各種文章,pdf和教程。 大多數示例/示例代碼包括數學字符。 即使是打字的常見任務
- >
我必須輸入: - &>
事實是我不知道如何在emacs中輸入數學字符(我用於練習haskell編碼)。 我目前的鍵盤布局是“英國美國”。
是否有任何特定的鍵盤或鍵盤布局最適合輸入數學符號(用於haskell編程)?
haskell是否將所有Math符號作為函數? 我目前的假設是haskell必須支持所有數學符號作為函數。
例如+, - ,/,*等
Unicode Math Symbols注意:許多haskell論文中都有這些符號。
您不必使用在論文中看到的花哨的unicode符號 - 代替→您可以為每個特殊字符編寫->
等等。 鑒於此,正常的美國Qwerty布局是Haskell的完美發現。
但是,如果您發現→樣式更容易閱讀(但顯然不容易鍵入),您可以讓Emacs顯示帶有這些符號的代碼。 這完全是裝飾性的,就像語法高亮一樣:即使你看到一個→,源代碼仍然有一個->
,這仍然是你輸入的內容。 您可以這樣啟用:
(setq haskell-font-lock-symbols t)
這種符號模式可能會使你的一些縮進看起來有點奇怪。 但是,我已經使用了一段時間,並沒有任何問題。 當我使用漂亮的符號代替ASCII代理時,我當然更喜歡查看我的代碼。
所以你仍然鍵入- >但它看起來更漂亮。
但是,有時候你確實需要像希臘字母這樣的花哨符號。 例如,如果您正在從紙張實現算法,那么保持變量名稱相同可能是有意義的。 為此,您可以通過C-\\
使用Emacs的TeX輸入模式並輸入TeX
。 例如,這將允許您鍵入\\lambda
並獲得λ
。 要查看可以鍵入的完整符號列表,請運行Mx describe-input-method
,然后輸入TeX
。
最后:哈斯克爾不支持像+所有的“數學符號”和-為運營商。 實際上,由這些字符組成的任何標識符都是自動中綴。 所以你可以實際定義自己的運算符。 你可以這樣寫:
a +++ b = a * a + b * b
然后你就可以在中綴位置使用+++
函數,就像任何其他運算符一樣。 我相信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-1啟用並選擇rfc1345
。 另一個例子是Emacs用於編輯Agda ( 一種依賴類型的編程語言 )的模式,其中LaTeX(ish)轉義被轉換為Unicode字符。
簡而言之,答案是最合適的鍵盤布局是您最熟悉的。 Haskell的角色使用沒有什么特別之處,這需要任何不同的東西。
我知道有一種Dvorak風格用於編程,但似乎學習一種新的鍵盤布局比簡單地為你必須擊中的新鍵組合建立肌肉記憶更難。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.