\\
F#中的Haskell列表差异运算符是否有等价运算符?
不,...只需使用特殊字符集将其编写并使其成为中缀运算符即可。反斜杠(\
)不在下面的列表中,因此它不能用作中缀运算符。参见手册:
infix-op:=
or || & &&OP $OP = |OP &OP ^OP :: -OP +OP *OP /OP %OP **OP 前缀操作:=
!OP ?OP ~OP -OP +OP % %% & &&
被弹开了,但我认为值得在这里编写( /-/ )
(Haskell的F#版本\\
)的实现:
let flip f x y = f y x let rec delete x = function | [] -> [] | h :: t when x = h -> t | h :: t -> h :: delete x t let inline ( /-/ ) xs ys = List.fold (flip delete) xs ys
这将像Haskell的\\
那样运行(xs @ ys) /-/ xs = ys
。例如:(7 :: [1 .. 5] @ [5 .. 11]) /-/ [4 .. 7]
计算为[1; 2; 3; 5; 7; 8; 9; 10; 11]
。