我想用標識符中的Unicode字符(非拉丁文)在Haskell中編寫一些教育代碼。 (這樣標識符對於非英文自然語言的演講者來說看起來很好,很自然,因爲在寫作中不使用拉丁字符)。所以,我着手尋找適當的Haskell實現來實現這一點。在何處指定是否允許在Haskell實現中使用Unicode標識符?
但如果是這個功能在語言規範中規定?在尋找合適的實現時,我將如何引用此功能? (和已知哈斯克爾implemenations實際支持Unicode標識符?)
原來,一個Haskell的實現沒有接受我使用Unicode識別碼,而另一個沒有接受它。如果有一種方法可以將我的代碼的這種需求正式化,我可能會希望它以語言功能開關的形式出現,這樣,如果我或其他人試圖運行我的代碼,立刻就會清楚他的實現是否缺失所需的功能,因此他應該尋找另一個。 (這個功能也可能有一個wiki頁面 - 「Unicode標識符」,它將列出哪些現有的實現支持它,以便人們知道如果需要它可以去哪裏。)
(順便說一句,我已經在這個問題上加了一個「語法」標籤,但我實際上認爲它是一個lexing級別的問題,這個級別比語言的語法級別要低。這裏是否有標籤的lexing級別的特徵標籤?語言,而不是語言的語法規範的特徵?)
至於最後一段:它是語法的一部分。它可能不是語法的一部分,但標記化和解析之間的區別僅在實踐中存在。還有一些系統(例如Parsing Expression Grammars)可以跳過標記化步驟並迎合實際的源代碼。我的實驗 – delnan 2011-04-01 18:48:03
詳情:GHC-6.10.4- [ALT2(http://prometheus.altlinux.org/en/5.1/srpms/ghc)(IIRC)不接受統一標識,GHC-6.12.3- ALT4和GHC-7.0.1- [ALT1(http://prometheus.altlinux.org/en/Sisyphus/srpms/ghc)允許使用Unicode的標識符,並且hugs98-20060921- [alt5](HTTP://prometheus.altlinux .org/en/5.1/srpms/hugs98)不允許使用Unicode標識符(這是不幸的,因爲我認爲它可能比ghc更好,因爲它更簡單,也許更簡單的錯誤消息)。 – 2011-04-01 18:53:13
更多有關Unicode ID的相關實驗:啊,我也嘗試了curry-0.9.11(因爲我可能想用Curry「extensions」展示一些代碼):這個Muenster Curry Compiler不允許Unicode標識符(IIRC) 。 – 2011-04-01 19:01:55