Chức năng uncurry
chỉ hoạt động cho các chức năng chụp hai đối số:Haskell có các hàm/bộ dữ liệu Vd không?
uncurry :: (a -> b -> c) -> (a, b) -> c
Nếu tôi muốn uncurry chức năng với một số tùy ý của lập luận, tôi chỉ có thể viết các chức năng riêng biệt:
uncurry2 f (a, b) = f a b
uncurry3 f (a, b, c) = f a b c
uncurry4 f (a, b, c, d) = f a b c d
uncurry5 f (a, b, c, d, e) = f a b c d e
Nhưng điều này được tẻ nhạt một cách nhanh chóng. Có cách nào để khái quát hóa điều này, vì vậy tôi chỉ phải viết một chức năng?
Không theo cách đó, nhưng trong mọi trường hợp, tại sao bạn muốn thực hiện việc này? Theo kinh nghiệm của tôi, có rất ít trường hợp bạn cần nhiều hơn uncurry2 –
@Paul: Không có lý do cụ thể, nhưng ngay sau khi tôi thấy bất kỳ kiểu lặp lại nào, tôi tự hỏi mình làm cách nào để khái quát và trừu tượng từ nó. – fredoverflow