首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Haskell:默认类型的约束

Haskell:默认类型的约束
EN

Stack Overflow用户
提问于 2010-05-19 07:53:31
回答 1查看 3.3K关注 0票数 18

考虑这个例子:

代码语言:javascript
复制
applyKTimes :: Integral i => i -> (a -> a) -> a -> a
applyKTimes 0 _ x = x
applyKTimes k f x = applyKTimes (k-1) f (f x)

applyThrice :: (a -> a) -> a -> a
applyThrice = applyKTimes 3

applyThrice中的3由GHC缺省为Integer,如使用-Wall编译时所示

代码语言:javascript
复制
Warning: Defaulting the following constraint(s) to type 'Integer'
         'Integral t'
           arising from a use of 'applyKTimes'

所以我猜Integer是默认的Integral a => a

  • 有没有办法也为其他约束定义“默认类型”?
  • 使用默认类型是不好的做法吗?(在使用-Wall..)

时,它确实会抱怨

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2861988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档