Описание тега formlets

Формлеты - это способ создания HTML-форм, которые безопасны от типов, обрабатывают ошибки, абстрагируются и легко объединяются в большие формы.

Формлеты - это способ создания 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

Теперь у нас есть виджет для логических значений, который мы можем использовать везде в наших формах!