Сгруппированные флажки в Haskell / Yesod
В настоящее время я работаю с Haskell на веб-платформе Yesod, и мне нужно создать форму на одной из моих веб-страниц. Эта форма должна содержать несколько флажков, но они должны быть сгруппированы по категориям. Например, пользователю нужно будет выбрать 3 дисциплины в списке из 10 флажков, 5 предметов, и из них максимум 2 могут быть оружием.
Я прочитал части книги на веб-сайте Yesod, и, исходя из моего понимания, мне нужно будет создать пользовательское поле для создания групп флажки. К сожалению, я не очень хорошо справляюсь с Haskell (только начал использовать его 1-2 недели назад), и у меня есть некоторые трудности с пониманием того, как я мог бы достичь этого. Для справки, это страница, которую я прочитал в книге на веб-сайте Yesod, где говорится о пользовательских полях: http://www.yesodweb.com/book/forms
Зная это, мой вопрос будет: как создать групповые флажки в Haskell/Yesod?
EDIT: в ссылке, которую я предоставил, я понимаю последнее два значения конструктора Field (fieldView и fieldEnctype), это первое (fieldParse), которое я не знаю, как изменить для моей цели. Вот пример в ссылке, на которую я ссылался:
passwordConfirmField :: Field Handler Text
passwordConfirmField = Field
{ fieldParse = rawVals _fileVals ->
case rawVals of
[a, b]
| a == b -> return $ Right $ Just a
| otherwise -> return $ Left "Passwords don't match"
[] -> return $ Right Nothing
_ -> return $ Left "You must enter two values"
, fieldView = idAttr nameAttr otherAttrs eResult isReq ->
[whamlet|
<input id=#{idAttr} name=#{nameAttr} *{otherAttrs} type=password>
<div>Confirm:
<input id=#{idAttr}-confirm name=#{nameAttr} *{otherAttrs} type=password>
|]
, fieldEnctype = UrlEncoded
}