Tôi muốn sử dụng Data.List.groupBy để nhóm một danh sách các bộ dữ liệu dựa trên sự bình đẳng của phần tử snd
.
tôi có thể làm điều này:Có giải pháp thư viện chuẩn nào cho vấn đề Haskell này không?
groupBy (\l r -> snd l == snd r) listOfTuples
Nhưng nó đập vào mắt tôi như quá nhiều soạn sẵn trong chức năng và so sánh- - đặc biệt là bởi vì nó có thể nhận được rất nhiều lộn xộn hơn nếu tôi được làm một so sánh phức tạp hơn. Tôi muốn làm điều gì đó như:
groupBy (comparing snd) listOfTuples
nhưng chữ ký loại so sánh là comparing :: (Ord a) => (b -> a) -> b -> b -> Ordering
, vì vậy nó không biên dịch trong ví dụ này.
Tôi cũng có thể làm:
groupBy (\l r -> (comparing snd l r) == EQ) listOfTuples
Nhưng đây không phải là tốt hơn so với lần thử đầu tiên. Có giải pháp thư viện chuẩn nào cho vấn đề này không, trước khi tôi tự xoay sở?
Gói nào 'on' đến từ đâu? –
@Matt: Data.Function (http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-Function.html#v:on) nói chung bạn có thể tìm kiếm các hàm trên hoogle: http://www.haskell.org/hoogle/?hoogle=on – porges
@Porges: cảm ơn! –