Tại sao việc áp dụng một phần chức năng với các chữ ký khác nhau hoạt động?Giải thích về ứng dụng một phần - tham gia
Hãy Control.Monad.join
làm ví dụ:
GHCi> :t (=<<)
(=<<) :: Monad m => (a -> m b) -> m a -> m b
GHCi> :t id
id :: a -> a
GHCi> :t (=<<) id
(=<<) id :: Monad m => m (m b) -> m b
Tại sao nó chấp nhận id :: a -> a
ở vị trí của (a -> m b)
cãi nhau, vì họ là rõ ràng là khác nhau?
Nghe có vẻ đơn giản và dễ hiểu, cảm ơn. Là chữ ký cuối cùng của = << id bằng cách nào đó suy ra từ giá trị trả về để khớp với phần còn lại của đối số hàm? –
@David có, tôi tin rằng đó là cơ bản chính xác. –