首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当声明函数类型时,在函数中包含在Haskell中的TypeClass

当声明函数类型时,在函数中包含在Haskell中的TypeClass
EN

Stack Overflow用户
提问于 2016-06-06 12:37:49
回答 2查看 66关注 0票数 0

我正在使用http://learnyouahaskell.com学习haskell,我不知道什么时候必须将TypeClass包含到像下面这样的函数类型声明中:

代码语言:javascript
复制
reverse' :: (Int a) => [a] -> [a]

例如,在递归:http://learnyouahaskell.com/recursion中。有一些例子,当老师包括台风,而其他人只把类型没有台风。

代码语言:javascript
复制
repeat' :: a -> [a]  

什么时候I应该包含Typeclass,在哪些情况下没有必要?

EN

回答 2

Stack Overflow用户

发布于 2016-06-06 13:18:05

大多数情况下,GHC可以确定需要什么样的约束。下面有两种方法让GHC告诉您它认为最常见的函数类型是什么:

  1. 不要在函数上放置类型签名,并且在ghci提示符下使用命令:t functionName
  2. 使用类型洞_ (GHC >= 7.8)作为类型签名: 重复:_重复.=

ghci和ghc都会发出如下消息:

代码语言:javascript
复制
    Found hole ‘_’ with type: ...
票数 3
EN

Stack Overflow用户

发布于 2016-06-06 12:42:57

通常情况下,最好是以最小的限制来设计您的函数。您的reverse'函数是否实际执行要求其内容为Int类型的任何操作?如果没有,那么就没有理由强制限制内容是Int类型的。

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

https://stackoverflow.com/questions/37657698

复制
相关文章

相似问题

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