列表中的第一个元素haskell

Q_96

所以我需要做一个find2方法,将第一个Element取出。

例如 find2 :: (a -> Bool) -> [a] -> a

find2 (>4) [1 .. 10]

应该有一个输出 5

我对Haskell不好,但是我想学习。

我的第一次尝试是

find2 :: (a -> Bool) -> [a] -> a
find2 p [] = []
find2 p (x:xs)
 |p x = x+1
 |otherwise = finde p xs

但是我遇到一个错误

 * Couldn't match expected type `a' with actual type `[a0]'
      `a' is a rigid type variable bound by
        the type signature for:
          find2 :: forall a. (a -> Bool) -> [a] -> a
        at C:\\Users\XY\Desctop\XY.hs:30:1-32
    * In the expression: []
      In an equation for `find2': find2 p [] = []
    * Relevant bindings include
        p :: a -> Bool
          (bound at C:\\Users\XY\Desctop\XY.hs:31:7)
        find2 :: (a -> Bool) -> [a] -> a
          (bound at C:\\Users\XY\Desctop\XY.hs:31:1)
亚历杭德罗·德·西科

这里有问题。可能不会在你的列表中的值,其中p成立。返回空列表时,可以在函数的基本情况下看到该问题。但是,您声明了函数以返回单个a值,而不是列表。

因此,您需要一种将找到的值与空值区分开的方法。为此,您可以声明要返回的函数,Maybe a而不是a这样,当您到达空列表大小写时,您可以返回Nothing;如果找到了所要查找的元素,则可以返回Just x它看起来像这样:

find2 :: (a -> Bool) -> [a] -> Maybe a
find2 p [] = Nothing
find2 p (x:xs)
 |p x = Just x
 |otherwise = find2 p xs

如果您不熟悉此Maybe类型,则可以在此处阅读有关类型的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

返回Haskell中列表的第一个元素

来自分类Dev

从Haskell的列表中删除第一个和最后一个元素

来自分类Dev

Haskell:在元组列表中查找第一个元素为x的元组

来自分类Dev

Haskell 列表输出中缺少第一个元素

来自分类Dev

Python:嵌套列表中的第一个元素

来自分类Dev

列表中的第一个元素出现故障

来自分类Dev

在列表中删除元组的第一个元素

来自分类Dev

从列表中的3个元组中获取第一个和第二个元素-Haskell

来自分类Dev

切掉Python列表中每个(列表)元素中的第一个元素

来自分类Dev

从列表中创建一个数组,其中数组的第一个元素是列表中的第一个元素

来自分类Dev

从第二个列表中减去第一个列表中的元素

来自分类Dev

列表与列表的第一个元素之间的交集

来自分类Dev

如何从现有列表列表中创建第一个元素的新列表

来自分类Dev

Python-如何替换列表列表中每个列表的第一个元素

来自分类Dev

根据给定的第一个元素从列表列表中检索列表

来自分类Dev

基于第一个元素在列表列表中对列表进行分组

来自分类Dev

元组列表到元组 C# 列表中的第一个元素列表

来自分类Dev

Haskell过滤器的第一个元素

来自分类Dev

Haskell反转尾巴但保留第一个元素

来自分类Dev

如何删除列表中列表中的第一个元素?

来自分类Dev

在列表中查找比当前元素大n倍的第一个元素

来自分类Dev

显示父元素列表中的每个第一个元素(jQuery + CSS)

来自分类Dev

将第一个元素与列表中的最大元素交换-Python

来自分类Dev

在列表中查找比当前元素大n倍的第一个元素

来自分类Dev

根据列表中的以下元素获取第一个元素的范围

来自分类Dev

如何将列表中的每个元素除以第一个元素

来自分类Dev

比较python嵌套列表中列表的第一个元素

来自分类Dev

仅更改列表中第一个元素的方法(将列表作为参数传递)

来自分类Dev

R-使用列表中每个项目的第一个元素过滤列表

Related 相关文章

  1. 1

    返回Haskell中列表的第一个元素

  2. 2

    从Haskell的列表中删除第一个和最后一个元素

  3. 3

    Haskell:在元组列表中查找第一个元素为x的元组

  4. 4

    Haskell 列表输出中缺少第一个元素

  5. 5

    Python:嵌套列表中的第一个元素

  6. 6

    列表中的第一个元素出现故障

  7. 7

    在列表中删除元组的第一个元素

  8. 8

    从列表中的3个元组中获取第一个和第二个元素-Haskell

  9. 9

    切掉Python列表中每个(列表)元素中的第一个元素

  10. 10

    从列表中创建一个数组,其中数组的第一个元素是列表中的第一个元素

  11. 11

    从第二个列表中减去第一个列表中的元素

  12. 12

    列表与列表的第一个元素之间的交集

  13. 13

    如何从现有列表列表中创建第一个元素的新列表

  14. 14

    Python-如何替换列表列表中每个列表的第一个元素

  15. 15

    根据给定的第一个元素从列表列表中检索列表

  16. 16

    基于第一个元素在列表列表中对列表进行分组

  17. 17

    元组列表到元组 C# 列表中的第一个元素列表

  18. 18

    Haskell过滤器的第一个元素

  19. 19

    Haskell反转尾巴但保留第一个元素

  20. 20

    如何删除列表中列表中的第一个元素?

  21. 21

    在列表中查找比当前元素大n倍的第一个元素

  22. 22

    显示父元素列表中的每个第一个元素(jQuery + CSS)

  23. 23

    将第一个元素与列表中的最大元素交换-Python

  24. 24

    在列表中查找比当前元素大n倍的第一个元素

  25. 25

    根据列表中的以下元素获取第一个元素的范围

  26. 26

    如何将列表中的每个元素除以第一个元素

  27. 27

    比较python嵌套列表中列表的第一个元素

  28. 28

    仅更改列表中第一个元素的方法(将列表作为参数传递)

  29. 29

    R-使用列表中每个项目的第一个元素过滤列表

热门标签

归档