Một trong những ví dụ từ Learn You a Haskell là:Rõ ràng việc xác định thuần túy chức năng để sử dụng
pure (+) <*> Just 3 <*> Just 5
Ông nói:
Vì vậy, lúc đầu, chúng tôi có
pure (+)
, đó làJust (+)
Tôi giả sử rằng Haskell đang sử dụng suy luận kiểu trên hàm <*>
để xác định rằng hàm pure
trên LHS sẽ là một trong trường hợp của lớp loại Applicative
(dựa trên thực tế chúng tôi đang sử dụng Just 5
trên RHS và Just
là a Maybe
).
Tuy nhiên, có trường hợp bạn có giá trị bạn muốn chuyển thành hàm Functor sử dụng phương pháp pure
, nhưng bạn sẽ không sử dụng nó ngay lập tức thông qua hàm <*>
và do đó Haskell có thể 't xác định chức năng pure
nào để sử dụng? Nếu vậy, bạn sẽ tuyên bố rõ ràng chức năng pure
nào để sử dụng?
Hoặc, có phải là trường hợp đó Haskell sẽ không cố gắng để xác định pure
chức năng cho đến khi kết quả của pure
chức năng được sử dụng trong một số ngữ cảnh (chẳng hạn như khi bạn ăn nó vào một chức năng <*>
tại một số điểm)
Đây là câu hỏi suy luận kiểu. – dave4420