отключение полей в формлетах/пищеварительных функторах?

С формлетами/пищеварительными функторами я пытаюсь понять, как выборочно отключать поля во время выполнения. Отключение поля приведет к отключению как отображения поля, так и проверки.

Надуманный пример: предположим, что наш базовый тип данных формы выглядит так:

data Info =
  Info {
     favcolor :: String,
     deptId   :: Int,
     company  :: String,
     agree    :: Boolean
  }

но поле deptId должно отображаться только в том случае, если пользователь является сотрудником, в противном случае должно отображаться поле company. И поле agree должно отображаться, если пользователь еще не нажал поле «Согласен».

Я не хочу создавать разные типы форм для каждого возможного варианта: (любимый цвет, отдел, согласен), (любимый цвет, отдел), (любимый цвет, компания, согласен), (любимый цвет, компания). Что еще я могу сделать?


person ErikR    schedule 19.07.2012    source источник


Ответы (1)


Я думаю, что это ломает модель пищеварительных функторов и не может быть сделано. Тем не менее, это было бы хорошим запросом функции!

person sclv    schedule 29.01.2013