F#のハスケルのリスト差分演算子\\
に相当する演算子がありますか?F#のHaskellリスト差分演算子
答えて
はバウンス、まだ私はそれが価値があると信じていました(/-/)
(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]
と評価されます。
いいえ...特殊文字のセットを使用して、それを書き込んで中置演算子にしてください。バックスラッシュ(\
)は以下のリストにないため、中置演算子としては機能しません。 manualを参照してください:
中置-OP:=
or || & && <OP >OP $OP = |OP &OP ^OP :: -OP +OP *OP /OP %OP **OP
プレフィックス-OP:=
あなたが本当に従来の差集合をしたいのではなく奇妙が注文した - しかし仮定し!OP ?OP ~OP -OP +OP % %% & &&
Haskellが提供していると思われるマルチセットの減算は、組み込みのset
関数を使用してリストをセットに変換し、組み込みの0123減数のセットから
> set [1..5] - set [2..4];;
val it : Set<int> = seq [1; 5]
これは重複を正しく処理しません。 –
編集でも重複が正しく処理されません。 \\演算子は、差異を設定する動作を提供しません。バッグ差異の動作を提供します。 – ScottWest
@Scott:ありがとう。おそらく忠実な翻訳をする価値がないように見えます。誰もがその機能性を望んでいるとは思っていません。 –
フィルター項目:たとえば
set xs - set ys
:差集合を計算するオペレータは
let (/-/) xs ys =
let ySet = set ys
let notInYSet x = not <| Set.contains x ySet
List.filter notInYSet xs
私はこれを使用しています:
let (/-/) l1 l2 = List.filter (fun i -> not <| List.exists ((=) i) l2) l1
誰もが問題を見た場合、私に知らせてください。
リストのため、結果に重複が存在する可能性があります。たとえば、
[1;1;2] /-/ [2;3] would be eq to [1;1]
- 1. F#リストとシーケンス演算子
- 2. F#演算子 "?"
- 3. Data.BitsのHaskellビット演算子
- 4. Haskell @演算子の混乱
- 5. Rx交差演算子
- 6. F#クエリ式の演算子の順序
- 7. haskellの>>演算子の逆数
- 8. F#(.. ..)演算子の使用/オーバーロード
- 9. F#++演算子の等価物
- 10. F#:>演算子の使用方法
- 11. Haskellのバインド演算子(>> =)
- 12. Text.ParserCombinators.ReadP(Haskell)で(+++)演算子の動作
- 13. 不明なhaskell演算子。 `<>`
- 14. とPythonリストの演算子
- 15. 演算子==とリスト::のremove()
- 16. コロン:リスト内の演算子
- 17. C++の代入演算子または増分演算子
- 18. C言語のIf-Else演算子とTernary演算子の速度差は?
- 19. コロン演算子factor:リスト
- 20. 増分と減算の演算子C#
- 21. 多分合体演算子
- 22. F番号:String.Joinと| F#では>演算子
- 23. 演算子( - - )()演算子C#
- 24. 演算子if演算子
- 25. 演算子のオーバーロード演算
- 26. Pythonのビット演算子 '&' 演算子
- 27. C++演算子()括弧 - 演算子Type()vs型演算子()
- 28. 行列のリストのRコロン演算子
- 29. リスト全体のブール演算子(Python)
- 30. Postfix増分演算子の評価
"//中置演算子として機能します。"いいえ、それはしません。これはF#の1行のコメントです。 –