2010-07-17 38 views
7

Trong chương 15 của Real World Haskell, một lớp kiểu được định nghĩa là gì:bối cảnh trong Haskell loại nhanh và nhiều lớp

class (Monad m) => MonadSupply s m | m -> s where 

Một vài đoạn văn sau, nó nói rằng >> = và trở về không cần phải được xác định vì bối cảnh. Nhưng không có giải thích thêm về ý nghĩa của ngữ cảnh.

Trình biên dịch biết MonadSupply là một bản sao của Monad nếu chỉ 'm' là một thể hiện của Monad?

Trả lời

6

"ngữ cảnh" chỉ là một phần giữa class=>, trong trường hợp này là hạn chế Monad m. Và nó không quá nhiều mà nó "biết", nhiều hơn rằng nó thực thi nó - viết một thể hiện của MonadSupply cho một loại m mà cũng không có một trường hợp Monad sẽ tạo ra một lỗi trình biên dịch.

+0

Ah, vâng. Tôi đã bỏ lỡ phần nói rằng việc trở thành một đơn nguyên là điều kiện tiên quyết. Cảm ơn vì câu trả lời nhanh :) – user394827

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