fry*_*bob 8 f# haskell functional-programming operators
\\F#中的Haskell列表差异运算符是否有等价运算符?
不,...只需使用特殊字符集将其编写并使其成为中缀运算符即可。反斜杠(\)不在下面的列表中,因此它不能用作中缀运算符。参见手册:
infix-op:=
Run Code Online (Sandbox Code Playgroud)or || & && <OP >OP $OP = |OP &OP ^OP :: -OP +OP *OP /OP %OP **OP前缀操作:=
Run Code Online (Sandbox Code Playgroud)!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
Run Code Online (Sandbox Code Playgroud)
这将像Haskell的\\那样运行(xs @ ys) /-/ xs = ys。例如:(7 :: [1 .. 5] @ [5 .. 11]) /-/ [4 .. 7]计算为[1; 2; 3; 5; 7; 8; 9; 10; 11]。