Có thể áp dụng giảm eta trong trường hợp dưới đây không?Có thể giảm eta không?
let normalise = filter (\x -> Data.Char.isLetter x || Data.Char.isSpace x)
Tôi đã chờ đợi một cái gì đó như thế này để có thể:
let normalise = filter (Data.Char.isLetter || Data.Char.isSpace)
... nhưng nó không phải là
Một bổ sung thú vị cho điều này ([bị đánh cắp từ @JAbrahamson] (http://stackoverflow.com/questions/21026021/intrigued-by-as-instances-of-monad-and-functor/21026411#comment31608950_21026411)) là để xác định '(<||>) = liftM2 (||)', thì bạn có thể sử dụng nó làm 'bộ lọc' (isLetter <||> isSpace) ', và thậm chí tiếp tục kết hợp những bộ lọc này như 'filter (isLetter <||> isSpace <||> (==' 1 ')) '. Tôi thấy phong cách này đặc biệt dễ sử dụng và hấp dẫn. – bheklilr