У меня есть следующие виды:
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)
В настоящее время я вполне доволен тем фактом, что мне нужна одна форма для каждого типа «сыра» (хотя я бы, конечно, не возражал против динамической формы ...). Однако мне бы очень хотелось избавиться от повторения «Название блюда» в любой форме. Могу ли я как-то комбинировать формы, или мне в конечном итоге придется перейти к монадическим формам?