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

Что такое Eff и Aff?

Какова связь между типами Purescript Eff и Aff? Можно ли конвертировать между ними?

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

4b9b3361

Ответ 1

Eff - синхронный монодальный эффект. Он используется для последовательности эффектного внешнего кода JavaScript - таких, как генерация случайных чисел, чтение и запись изменяемых значений, запись на консоль и исключение и исключение.

Aff является монадой асинхронного эффекта. Он может обрабатывать и настраивать эффективный асинхронный код, например, запросы AJAX, тайм-ауты и сетевое и файловое ввода-вывода. Он также может выполнять синхронные эффекты, используя liftEff. И он также обеспечивает хороший механизм для обработки ошибок.

Можно преобразовать из Eff в Aff с помощью liftEff (все, что не приостанавливает, является экземпляром чего-то, что разрешено приостановить), но другое направление вообще невозможно. Aff действия могут выполняться в контексте Eff путем предоставления обратного вызова.

Haskell IO похож на оба, но ближе к Aff, чем Eff, поскольку действия IO могут представлять асинхронные вещи (например, threadDelay).