Ho deciso che oggi è il giorno in cui aggiusto alcune delle mie pure funzioni che sono inutilmente in esecuzione in un'azione monadica. Ecco cosa ho.Come organizzo le mie pure funzioni con le mie azioni monodiche idiomaticamente
flagWorkDays :: [C.Day] -> Handler [WorkDay]
flagWorkDays dayList =
flagWeekEnds dayList >>=
flagHolidays >>=
flagScheduled >>=
flagASAP >>=
toWorkDays
Ecco flagWeekEnds, al momento.
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
segue un andamento simile. toWorkDays
cambia semplicemente un tipo in un altro ed è una funzione pura.
flagScheduled
e flagASAP
sono azioni monodiche. Non sono sicuro di come combinare le azioni monadiche con le pure funzioni idiomaticamente in flagWorkDays
. Qualcuno potrebbe aiutarmi a risolvere flagWorkDays
, supponendo che flagWeekEnds
e flagHolidays
siano stati resi puri?
+1 per una spiegazione generale – fuz
Brillante, come sempre. – Ingo