Zhi*_*gor 17 haskell character special-characters
网上有很多有趣的haskell片段。这篇文章可以在这个(很棒的)堆栈溢出问题下找到。作者写道:
discount ? Floating ? ? ? ? ? ? ? ? ?
discount ? df x = x * (1 + df) ** (-?)
Run Code Online (Sandbox Code Playgroud)
那些花哨的箭头和点只是让在线页面看起来更好的一种方式,还是有一个实际的 Haskell 扩展(或其他什么,我不太了解术语)可以编译这样的东西?我应该注意到,->代码中也使用了通常的。
我有一种强烈的感觉,这不是我第一次看到这样的事情。
K. *_*uhr 25
有一个 GHC 扩展称为UnicodeSyntax允许某些语法的一些Unicode 替代方案。但是,一般来说,Haskell 源代码是用 Unicode 编写的,因此即使没有任何扩展名,也可以在普通的 Haskell 源代码中使用非 ASCII 字符作为标识符和运算符。
在问题中包含的代码片段中,作者同时使用了这两种工具。他们使用UnicodeSyntax允许Unicode字符?,?并?代替内置的::,=>和->语法,但他们使用的书写正规Haskell的Unicode支持?和?标识符。
以下程序在没有任何扩展的情况下有效:
discount :: Floating ? => ? -> ? -> ? -> ?
discount ? df x = x * (1 + df) ** (-?)
Run Code Online (Sandbox Code Playgroud)