F#中的Haskell列表差异运算符

fry*_*bob 8 f# haskell functional-programming operators

\\F#中的Haskell列表差异运算符是否有等价运算符?

nlu*_*oni 5

不,...只需使用特殊字符集将其编写并使其成为中缀运算符即可。反斜杠(\)不在下面的列表中,因此它不能用作中缀运算符。参见手册

infix-op:=

or || & && <OP >OP $OP = |OP &OP ^OP :: -OP +OP *OP /OP %OP

**OP
Run Code Online (Sandbox Code Playgroud)

前缀操作:=

!OP ?OP ~OP -OP +OP % %% & &&
Run Code Online (Sandbox Code Playgroud)

  • “ //将用作中缀运算符”。不,不会。那是F#中的单行注释。 (5认同)

Ram*_*nir 5

被弹开了,但我认为值得在这里编写( /-/ )(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]