Tôi đã chơi xung quanh với một chức năng đơn giản cho người khác Stack Overflow câu hỏi, và viết biểu thức (với applicative ((>) t), có lẽ?):Loại bỏ trùng lặp -
f a x ++ f a y
Rõ ràng đây là cách tốt nhất để viết biểu thức đó trong cuộc sống thực, dù tôi có tất cả các biến đó trong phạm vi, nhưng tôi thấy sự trùng lặp của f a
và nghĩ "Này, có thể bạn có thể loại bỏ điều đó bằng cá thể Ứng dụng cho các hàm". Tôi làm quen với:
liftA2 (++) (flip f x) (flip f y) a
điều đó thật khủng khiếp. Rõ ràng tôi cũng có thể loại bỏ sự trùng lặp bằng cách ràng buộc f a
với một điều gì đó trong mệnh đề where
, nhưng điều này được dự định là một bài tập trong việc sử dụng các hàm dựng sẵn.
Tôi thích câu trả lời này, Tuy nhiên! Tôi đoán tôi đã không thực sự tìm kiếm câu trả lời áp dụng cụ thể, rất nhiều cách để sử dụng thư viện chuẩn để loại bỏ các bản sao. – amalloy