2010-07-03 66 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