当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《F#中的Haskell列表差异运算符》经验,为你挑选了2个好方法。

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



1> nlucaroni..:

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

infix-op:=

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

**OP

前缀操作:=

!OP ?OP ~OP -OP +OP % %% & &&


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

2> Ramon Snir..:

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

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有