Tôi đã quyết định hôm nay là ngày tôi sửa một số chức năng thuần túy đang chạy không cần thiết trong một hành động đơn thuần. Đây là những gì tôi có.Làm cách nào để tổ chức các chức năng thuần túy với các hành động đơn thuần của tôi theo cách tự động
flagWorkDays :: [C.Day] -> Handler [WorkDay]
flagWorkDays dayList =
flagWeekEnds dayList >>=
flagHolidays >>=
flagScheduled >>=
flagASAP >>=
toWorkDays
Đây là flagWeekEnds, tính đến thời điểm hiện tại.
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
theo một mẫu tương tự. toWorkDays
chỉ thay đổi loại này sang loại khác và là hàm thuần túy.
flagScheduled
và flagASAP
là các hành động đơn thuần. Tôi không chắc chắn làm thế nào để kết hợp các hành động monadic với các chức năng tinh khiết idiomatically trong flagWorkDays
. Ai đó có thể giúp tôi sửa chữa flagWorkDays
, giả sử flagWeekEnds
và flagHolidays
đã được thực hiện tinh khiết không?
+1 cho lời giải thích chung – fuz
Rực rỡ, như mọi khi. – Ingo