Подтвердить что ты не робот

Фьючерсы в Haskell

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

val a = spawn foo;

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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