Описание тега formlets
Формлеты - это способ создания HTML-форм, которые безопасны от типов, обрабатывают ошибки, абстрагируются и легко объединяются в большие формы. Вот пример:
name :: Form String
name = input Nothing
Функция ввода принимает строку типа Maybe String и создает строку XHtmlForm. Может быть String используется для значений по умолчанию. Если вы дадите ему ничего, у него не будет значения по умолчанию. Если вы передадите (Просто "значение"), оно будет предварительно заполнено значением "значение".
Вы можете легко комбинировать формулы с помощью комбинаторов Applicative Functor. Предположим, у вас есть пользовательский тип данных:
data User = User {name :: String, age :: Integer, email :: String}
Затем вы можете создать форму, которая производит пользователя:
userForm :: Form User
userForm = User <$> name <*> inputInteger <*> input Nothing
Вы также можете иметь более продвинутые виджеты, такие как радио-выбор, где вы используете enumRadio:
enumRadio :: (Monad m, Enum a) => [(a, String)] -> Maybe a -> Form a
Поэтому он запрашивает список пар со значением и соответствующей меткой, возможное значение по умолчанию, и он возвращает что-то типа a.
chooseBool :: Form Bool
chooseBool = enumRadio [(True, "Yes"), (False, "No")] True
Теперь у нас есть виджет для логических значений, который мы можем использовать везде в наших формах!