【发布时间】:2013-11-20 04:31:06
【问题描述】:
通常当我创建函数时,我不知道在哪些函数中使用类型类(Eq、Integral 等)更好,因为有时不需要像这样使用它们:
factorial :: Int -> Int
bla bla bla
bla bla bla
和
factorial :: (Integral a) => a -> a
bla bla bla
bla bla bla
我相信第二个只是需要时间和地点
但是在elem函数中写Eq很重要(elleme下面是elem)
elemme :: Eq a => a -> [a] -> Bool
y `elemme` [] = False
y `elemme` (x:xs) = if y == x then True else y `elemme` xs
请给我一些建议。谢谢。
【问题讨论】:
-
这可能会对您有所帮助:stackoverflow.com/questions/17100036/…
-
想想函数/参数属性。你想要你的函数/参数有什么属性?首先,了解属性(
Eq,Ord,Monoid,...)然后,您可以限制您的函数使用参数(合规性)属性(而不是像这样的显式参数Int,Bool, ...)。 -
factorial实际上是一个不好的例子,因为如果你使用Int而不是Integer它会给出任何大于 20 的错误答案。 -
@JeremyList 可以说,是的。但是仍然可能有一些用例用于类似的事情......如果我无法想到它们,请原谅我,但我确信它们就在那里。
标签: haskell