2016-01-25 26 views
45

Bạn có thể chứng minh rằng nếu return a = return b thì a=b? Khi tôi sử dụng =, ý tôi là trong luật và chứng minh, không phải là ý nghĩa của lớp học Eq.Nếu trả về a = return b thì a = b?

Mỗi đơn nguyên mà tôi biết dường như đáp ứng điều này, và tôi không thể nghĩ ra một đơn nguyên có giá trị mà có thể không (Const a là một functor và applicative, nhưng không phải là một đơn nguyên.)

Trả lời

64

số Xem xét đơn vị tầm thường:

data Trivial a = Cow 

instance Monad Trivial where 
    _ >>= _ = Cow 
    return _ = Cow 
+18

... tốt hơn được gọi là 'Const()'. – leftaroundabout

+52

Tại sao tôi lại vượt qua cơ hội để viết 'Bò' trong chương trình Haskell? –

+5

Tại sao thực sự ... lấy điểm. – leftaroundabout

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