如何在Haskell中使用Unicode字符为函数创建别名
我想为Haskell库中的一些标准函数创建Unicode别名。这是我的尝试如何在Haskell中使用Unicode字符为函数创建别名,haskell,syntax,operators,Haskell,Syntax,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
{-# 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!"
当我试图编译它时,我得到了错误
[~/Desktop]$ ghc --make test.hs
[1 of 1] Compiling Main ( test.hs, test.o )
test.hs:10:1: parse error on input ‘∩’
[~/Desktop]$
我想使用这些unicode符号作为中缀运算符,希望没有反勾号。如何做到这一点 就像定义任何其他无点中缀运算符一样,您需要在定义点将运算符用括号括起来:
(∩) = Set.intersection
(∪) = Set.union
(⊆) = Set.isSubsetOf
(⊊) = Set.isProperSubsetOf
(∈) = Set.member
因为这些字符都被分类为符号,所以它们被视为中缀运算符,有或没有UnicodeSyntax,UnicodeSyntax只允许某些unicode字符保留为语言语法,例如::。就像定义任何其他中缀运算符时一样,无点,您需要在运算符的定义点将其括在括号中:
(∩) = Set.intersection
(∪) = Set.union
(⊆) = Set.isSubsetOf
(⊊) = Set.isProperSubsetOf
(∈) = Set.member
因为这些字符都被归类为符号,所以它们被视为中缀运算符,带有或不带有UnicodeSyntax,UnicodeSyntax只允许某些unicode字符位于保留为语言语法的位置,例如::。当您声明新函数时,需要用paranthes包围它们:
(∩) = Set.intersection
请注意,您还需要从Data.Set导入的函数中删除大写字母,因为Set.Intersection被视为一个数据构造函数,而不是一个函数,实际上并不存在。声明新函数时,您需要将其用偏执词包围:
(∩) = Set.intersection
请注意,您还需要从Data.Set导入的函数中删除大写字母,因为Set.Intersection被视为一个数据构造函数,而不是一个函数,实际上并不存在。正如另一个答案所指出的,大小写也是错误的。正如另一个答案所指出的,大小写也是错误的。@马林哇!非常感谢!;@马林哇!非常感谢!