Q
提取一個從[A]
2
A
回答
11
只是模式匹配它:
getSingleton [a] = a
2
如果你想在一個列表這第一個項目,你可以做
head [4]
5
或者到gatoatigrado的解決方案,您還可以使用head
功能,提取列表的第一個元素,但也列出了更多的工作而不是一個元素,另外還是Prelude中的標準功能。你只需要小心,不要將它應用到空列表中,否則你會得到一個運行時異常。
Prelude> head [4]
4
Prelude> head []
*** Exception: Prelude.head: empty list
6
head
是正常的回答,你看到三個(一個使用自定義名稱) - 這是功能上與你已經知道(x !! 0
〜head x
)。我強烈建議不要使用部分函數,除非您可以證明(使用本地知識)您永遠不會傳遞空列表並導致運行時異常。
如果您的功能並不能保證一個非空列表,然後使用listToMaybe :: [a] -> Maybe a
:
> listToMaybe [4]
Just 4
> listToMaybe [5,39,-2,6,1]
Just 5
> listToMaybe []
Nothing -- A 'Nothing' constructor instead of an exception
一旦你上了Maybe a
你可以模式匹配,保持它作爲也許並使用fmap
或也許單子,或some other method to perform further operations。
0
[]
是一個monad。所以你用單子「提取」操作,<-
double x = 2*x
doubleAll xs = do x <- xs
return (double x)
當然,一元計算的結果是在單子回來。 ;)
相關問題
- 1. 提取剛剛從 「A HREF」
- 2. 提取一個FAT .a文件Mac
- 3. Ruby從[3]刪除提取[「a」,「3」]
- 4. 從<a>在phantomjs提取信息
- 5. 從javascript中提取<a>
- 6. 從A從一個角度
- 7. 獲取型積分一個的值=>並[a]從一個積分的值=>([A],[A],[A])
- 8. 從IO a - > a寫一個函數?
- 9. BeautifulSoup - 提取<a>值
- 10. MSBuild從一個項目提取屬性
- 11. jquery從下一個td中提取值
- 12. 提取從一個模塊類成JAR
- 13. 從字符串中提取一個字
- 14. 從一個mysql表中提取id的
- 15. 從列表中提取第一個值
- 16. 提取信息從一個JSON:P5.js
- 17. 只從url中提取一個部分
- 18. 從NSArray中提取一個範圍
- 19. 從jar中提取一個目錄
- 20. c#從下一個節點提取值
- 21. 提取多個信息從一條線
- 22. 提取從一個文本PHP
- 23. 從多列中提取第一個值
- 24. 從一個單元格中提取innerText
- 25. 提取數字從一個字符串
- 26. 僅從一個節點提取內容
- 27. 從DataRow或DataReader提取一個函數
- 28. 從另一個網站提取內容
- 29. 提取從一個大文件
- 30. 提取一個NSCFConstantString
其實它並不完全一樣gatoatigrado的解決方案。具體來說,'head'將返回多個元素列表中的第一個元素,而如果給出多個元素的列表,'getSingleton'會導致錯誤。當然最好取決於用例。 – sepp2k 2011-05-30 07:03:23
哦,是的,你說得對,謝謝你指出,我忽略了。我會相應地更新我的答案。 – 2011-05-30 16:45:26