Я читал разные алгоритмы просеивания, когда наткнулся на улучшенную версию сита Эратосфена под названием Euler Sieve. Согласно Wikipedia, в Haskell существует реализация немного отличающейся версии идеи (называемой Turner Sieve).
Теперь я пытаюсь понять, что именно дает этот фрагмент кода, и я думаю, что у меня это есть, но теперь я хотел перевести код в F # и понятия не имею, с чего начать. Моя главная проблема заключается в том, что, похоже, не существует функции "вычесть" две последовательности.
Здесь код:
import Data.OrdList (minus)
primes = euler [2..]
euler (p : xs) = p : euler (xs `minus` map (*p) (p : xs))
Как это будет реализовано в F #? Возможно ли это?