考慮一下:如何簡化這個表達式?
map fromEnum $ zipWith (==) "aaaa" "abaa"
-- [1,0,1,1]
這將是不錯的只有一步這裏:
zipWith (\x y -> fromEnum (x == y)) "aaaa" "abaa"
現在我可以消除y
:
zipWith (\x -> fromEnum.(x ==)) "aaaa" "abaa"
但我無法消除x
。當然有辦法「作弊」...
zipWith (curry (fromEnum . uncurry (==))) "aaaa" "abaa"
......但這看起來比原來的lambda更醜。
我尋找的功能有點類似於Data.Function.on
,但「相反」。我有這樣的感覺,有一個令人尷尬的簡單解決方案。我忽略了什麼?
您是否關心效率或可讀性? – jmg
主要可讀性 – Landei
如果你問我,我發現第一個最具可讀性。也許是這樣寫的:map fromEnum。 zipWith(==)$「aaaa」「abaa」' –