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

Является ли сигнальная система Elm доступной как библиотека Haskell?

Для задачи, над которой я работаю, сигнальная система языка программирования Elm представляется подходящим решением.

Но мои чистые вычислительные функции реализованы в Haskell. Есть ли библиотека Haskell, которая позволила бы мне построить график сигналов (с моими чистыми функциями в узлах), чтобы он работал, как в Elm?

Мой фон

Мне нужно наблюдать промежуточные результаты огромного вычисления по требованию, т.е. я не хочу на самом деле форматировать и выводить каждый промежуточный результат, но если он запрашивается, тогда я должен ответить самым свежим промежуточным результатом ( полученных от сигнала вычисления).

На самом деле, есть несколько параллельных вычислений, и некоторые из них используют результат других, поэтому я хочу несколько независимых выходных сигналов для их наблюдения. Поэтому я считаю, что могу написать программу Elm, моделирующую систему, чтобы наблюдать промежуточные результаты по мере их доступности. (Возможно, я ошибаюсь, я должен попытаться написать прототип, по крайней мере, в Elm, возможно, но я тоже думаю об интеграции с моим основным кодом Haskell.)

4b9b3361

Ответ 1

Helm, который я в настоящее время поддерживаю, может быть то, что вы ищете. Он объединяет сигнализацию с окном SDL, которое всегда будет отображаться. Вы могли бы взломать функцию рендеринга и по-прежнему использовать Helm Signal без SDL, или вы могли бы просто вдохнуть вдохновение из Helm и написать аналогичную Signal с использованием Elerea (который использует Helm в фоновом режиме).

Еще лучшая идея может заключаться в том, чтобы модифицировать Helm, чтобы разрешить использование случаев, когда main может не иметь ничего для отображения и отправлять нам запрос на pull.

Ответ 2

Из комментарий от Tekmo к объявлению "Elm 0.15: Задачи, почтовые ящики и импорт Синтаксис ":

Почтовый ящик Haskell версии pipes-concurrency. Аналоговый   of Elm Address является Output, а аналог a Signal является   Input.

(Кстати, это кажется очень близким к тому, что я искал. Первоначально, в предыдущие версии Elm, абстракции, которые я действительно хотел, отсутствуют, но задачи и почтовые ящики могут соответствовать моим потребностям довольно хорошо. Итак, и теперь я знаю - благодаря комментарию Текмо - что аналогичная библиотека Haskell pipes-concurrency.)