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