Какой самый простой способ написать веб-приложения на Haskell?

Я хотел бы больше использовать Haskell для своих проектов, и я думаю, что если я смогу начать использовать его для веб-приложений, это действительно поможет в этом деле. Я пробовал счастья один или два раза, но мне было трудно оторваться от земли. Существуют ли более простые / более обычные (больше похожие на лампы) каркасы, которые я могу использовать, или я должен просто еще раз попробовать?

8 ответов

Лучшие инструменты 2011 года:

Сообщество веб-разработчиков вокруг Haskell процветает на соревновании между этими сообществами.

Авторы даже сравнивают свои фреймворки здесь: Сравнение веб-фреймворков Haskell Snap и Yesod

Я разработал MFlow с идеей максимального соотношения функциональности и размера кода. MFlow сделан не для того, чтобы создавать какие-либо другие фреймворки, кроме как использовать Haskell до предела, чтобы решить проблемы веб-приложений, чтобы значительно снизить шум и коэффициент ошибок в веб-программировании. Вся навигация в приложении MFlow безопасна во время компиляции. Он использует стандартные веб-библиотеки: WAI, formlets, stm, blaze-html.

Судите сами: это полное приложение с тремя страницами. В цикле он запрашивает два числа и показывает сумму. Вы можете нажать кнопку "Назад", как вам угодно:

module Main where
import MFlow.Wai.Blaze.Html.All

main= do
   addMessageFlows  [("sum", transient . runFlow $ sumIt )]
   wait $ run 8081 waiMessageFlow

sumIt= do
   setHeader $ html . body
   n1 <- ask $  p << "give me the first number"  ++>  getInt Nothing
   n2 <- ask $  p << "give me the second number" ++>  getInt Nothing
   ask $ p << ("the result is " ++ show (n1 + n2)) ++> wlink () << p << "click here"

Состояние может быть сделано постоянным с небольшой модификацией.

http://hackage.haskell.org/package/MFlow

Здесь есть примеры: http://haskell-web.blogspot.com.es/

Если вы решите использовать HApps, вы, вероятно, захотите ознакомиться с этим прекрасным учебным пособием, которое разрабатывается как приложение HApps: HApps Tutorial

Интерфейс веб-приложений, WAI, является очень хорошим базовым уровнем, на котором вы можете создавать приложения. Есть много хороших библиотек на hackage для маршрутизации, шаблонов и т. Д., Которые хорошо работают в сочетании с WAI, что я и делаю.

Вы можете использовать CGI и библиотеку комбинаторов (x)html, как указано в статье по веб-разработке на Haskell. Более подробный обзор библиотек, фреймворков и т. Д. Для веб-программирования на haskell можно найти в разделе Практическое веб-программирование на Haskell.

Yesod был бы хорошим выбором, вы можете найти онлайн- книгу O'Reilly по Yesod Web Framework.

Есть также Hope (ссылка устарела), хотя она, похоже, не набрала такой же привлекательности, как HApps и WASH. Тем не менее, сайт также был тихим около года.

Другие вопросы по тегам