У меня есть следующие типы:
data Cheese = Cheddar Int | Edam String String | Cottage String Int
data Meal = Meal {
nameOfMeal :: String,
... other generic fields
cheese :: Cheese
}
В настоящее время мои формы выглядят так:
cheddarForm = renderTable $ construct
<$> areq textField "Name of meal" Nothing
<*> areq intField "Cheddar fat" Nothing
where
construct name fat = Meal name (Cheddar fat)
В настоящее время я весьма доволен тем фактом, что мне нужна одна форма для каждого типа «сыра» (хотя я, конечно, не возражаю против наличия динамической формы…). Тем не менее, я бы очень хотел избавиться от повторения «Название еды» в каждой форме. Могу ли я как-то объединить формы, или я должен в конечном итоге перейти на монадические формы?