2010-07-03 62 views
3

身份功能我有一个这样类型的函数:如何写在Haskell

​​

这是一种像一个特定的字符串类型映射到一个功能所以映射功能。 因为我需要处理调用functionX [],我认为这个调用应该返回一个叫做identity function的东西,或者别的什么,我该怎么写呢?

+2

你可能会从一本书中获利的人们新的哈斯克尔。我喜欢[Learn you Haskell For Great Good](http://learnyouahaskell.com/)和[Real World Haskell](http://book.realworldhaskell.org/)。两者都可以在线阅读。 – rampion 2010-07-03 04:49:43

+0

我有点困惑。你的函数获取一个字符串列表,但返回一个单一的函数。或者,也许你的意思是: “functionX :: String - > Int - > Int” 然后,您可以将它应用到使用zipWith的字符串和整数列表。顺便说一句,你的括号是不需要的; “ - >”是正确的联想。 – 2010-07-03 07:30:11

+0

另请参阅http://stackoverflow.com/questions/3136338/uses-for-haskell-id-function – 2011-04-19 03:26:08

回答

6

id被预定义为haskell中的标识函数。它有型号id :: a -> a

如果你愿意,你可以很容易地定义自己:

myIdentityFunction :: a -> a 
myIdentityFunction a = a 
+0

因此,身份函数的类型是[Integer] - > [Integer]? – Rn2dy 2010-07-03 04:32:15

+1

我可能记得不正确,但我认为haskell默认为通用类型 – Cogwheel 2010-07-03 04:38:43

+3

@baboonWorksFine:Cogwheel的权利。标识函数的返回类型由其输入类型进行参数化。由于它不会对输入做任何事情而不是返回它,所以它不会对输入的类型加以限制。在Haskell中,类型签名中的小写字母(如'id :: a - > a')表示这些符号代表类型参数,而不是像String或Integer这样的具体类型。 – rampion 2010-07-03 04:42:32