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





Вот список публикаций в блогах о Haskell из вики.
Кроме того, следующая большая веб-платформа Haskell - это СТИРКА.
Вы можете использовать CGI и библиотеку комбинатора (x) html, как указано в статье Веб-разработка на Haskell вики. Более подробный обзор библиотек, фреймворков и т. д. Для веб-программирования в haskell можно найти в Практическое веб-программирование на Haskell.
Если вы решите использовать HApps, вы, вероятно, захотите ознакомиться с этим отличным учебным курсом на основе примеров, который разрабатывается как приложение HApps: Учебник по HApps
Лучшие инструменты по состоянию на 2011 год:
Сообщество веб-разработчиков вокруг Haskell процветает благодаря конкуренции между этими сообществами.
Авторы даже сравнивают свои фреймворки здесь: Сравнение веб-фреймворков Haskell Snap и Yesod
Yesod был бы хорошим выбором, вы можете найти Книга Yesod Web Framework О'Рейли онлайн.
Интерфейс веб-приложения, WAI, - очень хороший базовый уровень, на котором вы можете создавать приложения. Есть много хороших библиотек для маршрутизации, шаблонов и т. д., Которые хорошо работают в сочетании с WAI, чем я и занимаюсь.
Я разработал 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/
CGI очень прост, особенно в системах с Apache. Вы просто создаете исполняемый файл, который распечатывает HTML-страницу (или ее часть). Вы можете проанализировать строку url (GET) и получить данные POST из системы, используя переменные среды. Это просто, но создание системы из этих частей требует работы.