假设我有一个类型类,对于这个类型类的每个实例我都有一个函数
f :: [Bool] -> Maybe (a, [a])
Run Code Online (Sandbox Code Playgroud)
我怎么称呼f?更准确地说,如果b是此类型类中的另一种类型,我如何指定我的意思是来自a的实例的f而不是来自b的实例?
有时您必须添加类型注释.考虑类型类Read:
class Read a where
read :: String -> a
Run Code Online (Sandbox Code Playgroud)
如果你试图read "1"得到整数1,你会得到一个错误,因为没有办法知道这个类型a是什么.但是,这有效:read "1" :: Int.
如果您f在编译器可以弄清楚是什么的情况下使用您的函数a,那么它将正常工作.否则,您必须通过添加适当的类型注释来帮助编译器.
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |