[英]How to lift a function to work on lenses?
我目前定義了兩個功能:
avg :: (Fractional e) => [e] -> e
avg e = uncurry (/) $ foldl' (\(a,l) v -> (a+v,l+1)) (0.0,0.0) e
avgOf :: (Fractional a) => Getting (Endo (Endo (a, a))) s a -> s -> a
avgOf g s = uncurry (/) $ foldlOf' g accfun (0.0,0.0) s
where accfun (a,l) v = (a+v, l+1)
我的印象是,必須有一種簡單的方法來擺脫整個avgOf
實現,並用一個簡單的方法取代它,只需“提升” avg
即可。
您可以使用partsOf
來構建整個布料。
avgOf l xs = xs^..partsOf l.to avg
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.