25
Làm thế nào tôi có thể có nhiều hạn chế lớp, vì vậy nếu A
là một Eq
và B
là một Num
, tôi có thể nói một trong haiHaskell loại chữ ký với nhiều khó khăn lớp
f :: Eq a => a -> b`
hoặc
f :: Num b => a -> b
Vì vậy, , làm cách nào tôi có thể có Eq a =>
và Num b =>
cùng một lúc?
f :: Eq a => Num b => a -> b
,f :: Eq a -> Num b => a -> b
, vàf :: Eq a, Num b => a -> b
không làm những gì tôi muốn.
Aha! Cảm ơn bạn. Làm các dấu ngoặc đơn với dấu phẩy gây ra một bộ cấp cao hơn của một số loại, hoặc là một ý nghĩa khác của dấu ngoặc đơn? –
@Andrew thực sự họ làm (bây giờ) mặc dù bạn có lẽ không nên lo lắng cho mình về những điều như vậy được nêu ra. Các kiểu Normall Haskell có * type * (kiểu kiểu) '*', vì vậy kiểu tuple có kiểu '* -> * -> *'. Trong các phiên bản gần đây của GHC, có một loại 'Constraint' mới như' Eq :: * -> Constraint', và các tuple đã được phát triển thành kiểu mới này. –