2016-04-25 20 views

Trả lời

12

Applicative cung cấp phương thức pure, là cách để "đăng nhập". Nếu không, mặc dù bạn có thể chuyển đổi F[A] để F[B], hoặc với A => B (thông qua map) hoặc F[A => B] (thông qua ap), bạn không có khả năng đặt bất cứ điều gì bên trong một F. Vì vậy, bạn bị giới hạn để cho phép người khác làm điều đó cho bạn.

Sự khác biệt với Applicative là bạn có thể đặt mọi thứ vào, bắt đầu từ không có gì.

Kể từ khi một trong hai có thể hữu ích ("bạn được trao quyền để đưa mọi thứ vào một F" và "không, giữ cho bàn tay của bạn ra, và hoạt động trên những gì bạn đang đưa ra"), ApplicativeApply là typeclasses riêng biệt.

+0

Cảm ơn bạn. Tôi nghĩ rằng tôi đã nhận nó. Bạn có thể đưa ra một ví dụ về việc sử dụng 'Áp dụng' không phải là' Áp dụng' (như trong "giữ tay bạn, và vận hành trên những gì bạn đang đưa ra")? – Michael

+0

Bạn có thể tưởng tượng tất cả các loại vụ án. Ví dụ: nếu bạn có loại lỗi mà bạn muốn xử lý nhưng bạn không muốn nó có thể tạo bất kỳ lỗi mới nào hoặc sử dụng bất kỳ thông tin nào không phải từ ngữ cảnh lỗi, bạn có thể muốn loại lỗi của mình có một 'Apply' typeclass nhưng không phải là một' Applicative'. –

Các vấn đề liên quan