С формлетами/пищеварительными функторами я пытаюсь понять, как выборочно отключать поля во время выполнения. Отключение поля приведет к отключению как отображения поля, так и проверки.
Надуманный пример: предположим, что наш базовый тип данных формы выглядит так:
data Info =
Info {
favcolor :: String,
deptId :: Int,
company :: String,
agree :: Boolean
}
но поле deptId
должно отображаться только в том случае, если пользователь является сотрудником, в противном случае должно отображаться поле company
. И поле agree
должно отображаться, если пользователь еще не нажал поле «Согласен».
Я не хочу создавать разные типы форм для каждого возможного варианта: (любимый цвет, отдел, согласен), (любимый цвет, отдел), (любимый цвет, компания, согласен), (любимый цвет, компания). Что еще я могу сделать?