Вопрос

У Haskell есть эквивалент способности Алисы связывать переменную к будущему?

val a = spawn foo;

где foo есть некоторая функция.

Я знаю, что Haskell поддерживает каналы и потоки; Я надеюсь на синтаксис естественным, чем Алиса, чтобы связать значение в будущем и порождать нить, чтобы рассчитать его, не имея дело с деталями.

Это было полезно?

Решение

Вы можете использовать par от Control.Parallel как в

a `par` f a b c
where
  a = foo

Это намек на время выполнения, которое a можно оценить в другом потоке.

Другие советы

Смешно, я просто читал новый пост Саймона Марлоу: Параллельное программирование в Haskell с явными фьючерсами. Отказ По-видимому, он и другие работают над новыми параллельными абстракциями программирования, которые предназначены для более естественного и явного, чем par а также pseq Апис

Не в стандартной библиотеке, но

http://ghcmutterings.wordpress.com/2010/08/20/parallel-programming-in-haskell-with-xplicit-futures/

data Future a = Future a

fork :: Eval a -> Eval (Future a)
fork a = do a' <- rpar (runEval a); return (Future a')

join :: Future a -> Eval a
join (Future a) = a `pseq` return a
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top