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