Я хотел бы использовать Haskell больше для моих проектов, и я думаю, что если я начну использовать его для веб-приложений, это действительно поможет этому. Я пробовал один или два раза, но у меня не было проблем с выходом на землю. Существуют ли более простые/более обычные (более похожие на лампы) рамки, которые я могу использовать, или я должен просто дать другим попробовать?Каков самый простой способ написания веб-приложений в Haskell?
ответ
Адрес a list of web related blog posts about Haskell from the wiki.
Кроме того, следующий большой веб-каркас Haskell - WASH.
Вы можете использовать CGI и библиотеку комбинаторов (x) html, как указано в статье wiki Haskell Web Development. Более широкий обзор библиотек, фреймворков и т. Д. Для веб-программирования в haskell можно найти в Practical web programming in Haskell.
Если вы решите пойти с HAPPS вы, вероятно, хотите, чтобы оформить этот отличный пример приводится учебник, который разрабатывается как приложение HAPPS: HApps Tutorial
Лучшие инструменты по состоянию на 2011 год являются:
Сообщество разработчиков веб вокруг Haskell был процветающий на конкуренции между этими сообществами.
Авторы даже сравнивают свои рамки здесь: Comparing Haskell's Snap and Yesod web frameworks
Йесод будет хорошим выбором, вы можете найти Yesod Web Framework Book онлайн O'Reilly.
Web Application Interface, 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-данные из системы с использованием переменных среды. Это просто, но создание системы из этих частей требует работы. – 2008-12-01 18:56:52