Tôi muốn sáng tác các chức năng theo cách sau:chức năng ngã ba fmap
compose :: (a->b->c) -> (d->a) -> (d->b) -> d -> c
compose f g h x = f (g x) (h x)
Vì vậy mà chúng ta có thể sử dụng nó theo cách sau:
compose (==) (myReverse . myReverse) id [1..100]
Tôi nghĩ rằng nó có thể được đơn giản hóa với một cái gì đó như 'fmap', do đó, nó không cần phải xác định 'soạn' ở tất cả. Nhưng tôi đã không tìm ra cách để làm điều đó.
Điều bạn đã cung cấp là giải pháp đơn giản và dễ đọc nhất. Có thể có khác được gọi là giải pháp mã "dày đặc" cho điều này, nhưng tôi thích mã đơn giản và dễ đọc :) – Ankur