Я решил, что сегодня день, когда я исправлю некоторые из моих чистых функций, которые излишне выполняются в монадическом действии. Вот что у меня есть.
flagWorkDays :: [C.Day] -> Handler [WorkDay]
flagWorkDays dayList =
flagWeekEnds dayList >>=
flagHolidays >>=
flagScheduled >>=
flagASAP >>=
toWorkDays
На данный момент это flagWeekEnds.
flagWeekEnds :: [C.Day] -> Handler [(C.Day,Availability)]
flagWeekEnds dayList = do
let yepNope = Prelude.map isWorkDay dayList
availability = Prelude.map flagAvailability yepNope
return $ Prelude.zip dayList availability
flagHolidays
следует аналогичной схеме. toWorkDays
просто меняет один тип на другой и является чистой функцией.
flagScheduled
и flagASAP
- это монадические действия. Я не уверен, как идиоматически объединить монадические действия с чистыми функциями в flagWorkDays
. Может ли кто-нибудь помочь мне исправить flagWorkDays
, предполагая, что flagWeekEnds
и flagHolidays
были очищены?