2015-10-02 3 views
3

В AWS Lambda люди могут создать Node.js функцию и вызвать его через события, например, сообщение, и т.д ..AWS лямбда, как выполнение Haskell функции

Интересно, как это может работать «под капотом» и как положить что-то подобное в Haskell. Загруженные функции в основном представляют собой библиотеки с одной функцией без функции main.

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

Можно ли сделать это в Haskell?

Чтобы уточнить: что я хочу сделать, например, загрузить несколько различных библиотек Haskell с одной функцией на платформе Haskell или любой другой контекст выполнения, который находится в моем центре обработки данных, и выполнить их/их по имени через CLI или API точно так же AWS Lambda работает с функциями node.js.

+0

Что вы ищете? Может быть https://hackage.haskell.org/package/aws-lambda – josejuan

+0

Я ищу какое-то руководство, как на практике выполнить выполнение произвольных функций в Haskell без основной функции. Пакет Haskell aws-lambda является оберткой для AWS API, так что вы можете выполнять/запускать лямбда-функции внутри вашей функции haskell. –

+0

Я думаю, вы должны уточнить, что вы хотите сделать (написать некоторые функции AWS Lambda с использованием языка Haskell невозможно), и, строго говоря, любой программе нужна функция 'main' для работы (хотя эта функция запускается на каком-то сервере службы). Вы хотите написать функции AWS Lambda с помощью Haskell? Затем взгляните на Amazon Linux ... – josejuan

ответ

1

Если вы хотите воспроизвести ту же функциональность (функции как услуги), существует множество технологий, которые вы можете использовать (мыло, rpc, rest, ...). Если вы не знаете это, я предлагаю вам прочитать о нем.

Мой любимый SOAP, но настолько непопулярен, и поддержка Haskell ограничена soap (см. related question). SOAP (как и другие) обеспечивают именно то, что вы хотите.

Но вы должны сформулировать свою настоящую проблему, чтобы выбрать лучшую технологию.

Если вы ищете дистрибутив собственного кода Haskell, то Cloud Haskell может быть хорошей отправной точкой.

Если вам нужно больше, как «веб-сервер», то посмотрите на sodium, elm ... в стиле Javascript или servant (генерировать код клиента для некоторых языков).

В любом случае, даже AWS Lambda требует поддержки для каждого языка, и вы не должны ожидать, что найдете одну вездесущую технологию (например, HTTP) для RPC.

1

Вы можете проверить «бессерверную для Haskell» рамки: http://qmu.li

Не только вы можете запускать отдельные функции Haskell как функции лямбда с ним, но вы также можете описать всю инфраструктуру AWS в Haskell. (против этого в шаблоне java/yaml CloudFormation), все это локально и легко развертывается в AWS.

Смежные вопросы