sch*_*ttl 0 haskell type-inference
let updateFunc = updatedMaybeProperty srcTitle targetTitle :: (Title -> Maybe a) -> Maybe a
_ = updateFunc (titleVersion :: Title -> Maybe Text)
_ = updateFunc (titleYearProduced :: Title -> Maybe Integer)
Run Code Online (Sandbox Code Playgroud)
我在第3行中收到此错误:
• Couldn't match type ‘Text’ with ‘Integer’
Expected type: Title -> Maybe Text
Actual type: Title -> Maybe Integer
• In the first argument of ‘updateFunc’, namely
‘(titleYearProduced :: Title -> Maybe Integer)’
Run Code Online (Sandbox Code Playgroud)
显然,在第2行中,编译器为推断类型,Maybe a并决定a必须始终为Text。
我怎样才能防止这种情况,并使其成为updateFunc“泛型”,以便它适用于不同的类型a?
尝试注释绑定,而不是表达式。
let updateFunc :: (Title -> Maybe a) -> Maybe a
updateFunc = updatedMaybeProperty srcTitle targetTitle
_ = updateFunc (titleVersion :: Title -> Maybe Text)
_ = updateFunc (titleYearProduced :: Title -> Maybe Integer)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |