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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
19
0
2 093
8

Ответы 8

Вот список публикаций в блогах о Haskell из вики.

Кроме того, следующая большая веб-платформа Haskell - это СТИРКА.

И есть Доменный язык на основе Apple webobjects.

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

CGI очень прост, особенно в системах с Apache. Вы просто создаете исполняемый файл, который распечатывает HTML-страницу (или ее часть). Вы можете проанализировать строку url (GET) и получить данные POST из системы, используя переменные среды. Это просто, но создание системы из этих частей требует работы.

Jared Updike 01.12.2008 21:56

Если вы решите использовать HApps, вы, вероятно, захотите ознакомиться с этим отличным учебным курсом на основе примеров, который разрабатывается как приложение 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/

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