Меня интересует реализация решеток не наивная функциональная реализация, которая на самом деле не является ситом, поэтому не что-то вроде этого:
let rec PseudoSieve list =
match list with
| hd::tl -> hd :: (PseudoSieve <| List.filter (fun x -> x % hd <> 0) tl)
| [] -> []
В приведенной выше второй ссылке описывается алгоритм, который потребует использования мультимапа, который, насколько мне известно, недоступен в F #. В приведенной реализации Haskell используется карта, которая поддерживает метод insertWith
, который я не видел в функциональной карте F #.
Кто-нибудь знает способ перевести данный код карты Haskell в F # или, возможно, знает об альтернативных методах реализации или алгоритмах просеивания, которые так же эффективны и лучше подходят для функциональной реализации или F #?