Является ли сигнальная система Elm доступной как библиотека Haskell?
Для задачи, над которой я работаю, сигнальная система языка программирования Elm представляется подходящим решением.
Но мои чистые вычислительные функции реализованы в Haskell. Есть ли библиотека Haskell, которая позволила бы мне построить график сигналов (с моими чистыми функциями в узлах), чтобы он работал, как в Elm?
Мой фон
Мне нужно наблюдать промежуточные результаты огромного вычисления по требованию, т.е. я не хочу на самом деле форматировать и выводить каждый промежуточный результат, но если он запрашивается, тогда я должен ответить самым свежим промежуточным результатом ( полученных от сигнала вычисления).
На самом деле, есть несколько параллельных вычислений, и некоторые из них используют результат других, поэтому я хочу несколько независимых выходных сигналов для их наблюдения. Поэтому я считаю, что могу написать программу Elm, моделирующую систему, чтобы наблюдать промежуточные результаты по мере их доступности. (Возможно, я ошибаюсь, я должен попытаться написать прототип, по крайней мере, в Elm, возможно, но я тоже думаю об интеграции с моим основным кодом Haskell.)
Ответы
Ответ 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
.)