smi*_*dha 1 syntax haskell operators
我想为Haskell库中的一些标准函数创建Unicode别名.这是我的尝试.
{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE NoMonomorphismRestriction #-}
import qualified Data.List as List
import qualified Data.Map as Map
import qualified Data.Set as Set
-- Convenient aliases for common operations via Unicode symbols.
? = Set.intersection
? = Set.union
? = Set.isSubsetOf
? = Set.isProperSubsetOf
? = Set.member
main = putStrLn "Hello World!"
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,我得到了错误
[~/Desktop]$ ghc --make test.hs
[1 of 1] Compiling Main ( test.hs, test.o )
test.hs:10:1: parse error on input ‘?’
[~/Desktop]$
Run Code Online (Sandbox Code Playgroud)
我想使用这些unicode符号作为中缀运算符,并希望没有反引号.怎么做到这一点?
就像定义任何其他中缀运算符无点时一样,您需要将运算符包含在其定义的括号中:
(?) = Set.intersection
(?) = Set.union
(?) = Set.isSubsetOf
(?) = Set.isProperSubsetOf
(?) = Set.member
Run Code Online (Sandbox Code Playgroud)
因为这些字符都被分类为符号,所以它们被视为中缀运算符,有或没有UnicodeSyntax
(它只允许在保留为语言语法的地方使用某些unicode字符,例如::
).
当你声明它们时,你需要用parantheses包围你的新函数:
(?) = Set.intersection
Run Code Online (Sandbox Code Playgroud)
请注意,您还需要从导入的函数中删除大写字母Data.Set
,因为Set.Intersection
它被视为数据构造函数而不是函数(并且实际上不存在).
归档时间: |
|
查看次数: |
258 次 |
最近记录: |