我决定今天是我修复一些在单子动作中不必要地运行的纯函数的日子。这就是我所拥有的。
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
是一元动作。我不确定如何将 monadic 动作与flagWorkDays
. 有人可以帮我修复flagWorkDays
,假设flagWeekEnds
并且flagHolidays
已经变得纯净了吗?