具有两个where子句的Haskell方法

奇伦科

我想编写一个具有两个where子句的Haskell函数,但从编译器中收到此错误:

输入中的语法错误(意外的符号“ changeNew”)

changeItem oPos nPos (x:xs) 
                        | oPos < nPos = changeOld
                        | oPos > nPos = changeNew
                        | otherwise = x : changeItem (oPos-1) (nPos-1) xs
                        where changeOld
                            | oPos == 0 = (xs !! nPos) : changeItem x (nPos-1) xs
                            | nPos == 0 = oPos : xs
                            | otherwise = x : changeItem (oPos-1) (nPos-1) xs
                        changeNew
                            | oPos == 0 = nPos : xs
                            | nPos == 0 = (xs !! oPos) : changeItem (oPos-1) x xs
                            | otherwise = x : changeItem (oPos-1) (nPos-1) xs

代码有什么问题?为什么不能声明两个where子句?

克里斯·泰勒

where子句中定义的名称需要在左侧对齐,像这样

changeItem oPos nPos (x:xs) 
                        | oPos < nPos = changeOld
                        | oPos > nPos = changeNew
                        | otherwise = x : changeItem (oPos-1) (nPos-1) xs
                        where 
                          changeOld
                            | oPos == 0 = (xs !! nPos) : changeItem x (nPos-1) xs
                            | nPos == 0 = oPos : xs
                            | otherwise = x : changeItem (oPos-1) (nPos-1) xs
                          changeNew
                            | oPos == 0 = nPos : xs
                            | nPos == 0 = (xs !! oPos) : changeItem (oPos-1) x xs
                            | otherwise = x : changeItem (oPos-1) (nPos-1) xs

尽管更“常用”的Haskell样式会将所有内容移至左侧,以防止您的代码进入右下角。

changeItem oPos nPos (x:xs) 
  | oPos < nPos = changeOld
  | oPos > nPos = changeNew
  | otherwise = x : changeItem (oPos-1) (nPos-1) xs
 where 
  changeOld
    | oPos == 0 = (xs !! nPos) : changeItem x (nPos-1) xs
    | nPos == 0 = oPos : xs
    | otherwise = x : changeItem (oPos-1) (nPos-1) xs
  changeNew
    | oPos == 0 = nPos : xs
    | nPos == 0 = (xs !! oPos) : changeItem (oPos-1) x xs
    | otherwise = x : changeItem (oPos-1) (nPos-1) xs

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将两个表合并为一个表,两个表具有不同的where子句

来自分类Dev

Haskell:使用相同的where子句的两个不同的函数

来自分类Dev

合并来自同一表但具有不同WHERE子句的两个SELECT查询

来自分类Dev

SQL Server 2012-在WHERE子句下具有两个条件的递归CTE

来自分类Dev

在同一表上具有不同where子句的两个选择查询

来自分类Dev

从两个具有相同WHERE子句的不同表中进行选择?

来自分类Dev

合并来自同一表但具有不同WHERE子句的两个SELECT查询

来自分类Dev

如何组合具有不同 set 和 where 子句的两个更新查询?

来自分类Dev

具有不同 where 子句的两个 SQL Server 查询

来自分类Dev

具有两个条件的 Linq Where 子句,不起作用

来自分类Dev

具有两个like子句的SQL查询

来自分类Dev

UNION与带有大WHERE子句的两个查询

来自分类Dev

带有两个 where 子句的子查询

来自分类Dev

具有相同WHERE子句的同一个表上的两个不同查询

来自分类Dev

在 Linq 中检查具有布尔数据类型的 where 子句中的两个条件时,List 为空

来自分类Dev

使用两个不同的where子句

来自分类Dev

LINQ的两个Where子句

来自分类Dev

结合两个具有不同 WHERE 条件的查询

来自分类Dev

一个查询中有两个SQL求和,其中包含两个where子句

来自分类Dev

Doctrine:如何从具有不同子句的两个表中获取两个实体的对象?

来自分类Dev

您如何编写针对Amazon redshift数据库的查询,以使相关查询的where子句具有两个条件?

来自分类Dev

django的“ in”子句是否要求列表具有两个值?

来自分类Dev

通过在两个或多个“IN 子句”(SSMS)中具有值来使用 Group

来自分类Dev

两个表中带有where子句的内部联接的Postgres索引

来自分类Dev

在两个表上都带有where子句的Rails LEFT OUTER JOIN

来自分类Dev

Where 子句中有两个条件的总和的 SQL 语句错误

来自分类Dev

具有两个不确定参数的方法?

来自分类Dev

Rails:具有两个方法的相同模板

来自分类Dev

具有相同方法的两个接口

Related 相关文章

  1. 1

    将两个表合并为一个表,两个表具有不同的where子句

  2. 2

    Haskell:使用相同的where子句的两个不同的函数

  3. 3

    合并来自同一表但具有不同WHERE子句的两个SELECT查询

  4. 4

    SQL Server 2012-在WHERE子句下具有两个条件的递归CTE

  5. 5

    在同一表上具有不同where子句的两个选择查询

  6. 6

    从两个具有相同WHERE子句的不同表中进行选择?

  7. 7

    合并来自同一表但具有不同WHERE子句的两个SELECT查询

  8. 8

    如何组合具有不同 set 和 where 子句的两个更新查询?

  9. 9

    具有不同 where 子句的两个 SQL Server 查询

  10. 10

    具有两个条件的 Linq Where 子句,不起作用

  11. 11

    具有两个like子句的SQL查询

  12. 12

    UNION与带有大WHERE子句的两个查询

  13. 13

    带有两个 where 子句的子查询

  14. 14

    具有相同WHERE子句的同一个表上的两个不同查询

  15. 15

    在 Linq 中检查具有布尔数据类型的 where 子句中的两个条件时,List 为空

  16. 16

    使用两个不同的where子句

  17. 17

    LINQ的两个Where子句

  18. 18

    结合两个具有不同 WHERE 条件的查询

  19. 19

    一个查询中有两个SQL求和,其中包含两个where子句

  20. 20

    Doctrine:如何从具有不同子句的两个表中获取两个实体的对象?

  21. 21

    您如何编写针对Amazon redshift数据库的查询,以使相关查询的where子句具有两个条件?

  22. 22

    django的“ in”子句是否要求列表具有两个值?

  23. 23

    通过在两个或多个“IN 子句”(SSMS)中具有值来使用 Group

  24. 24

    两个表中带有where子句的内部联接的Postgres索引

  25. 25

    在两个表上都带有where子句的Rails LEFT OUTER JOIN

  26. 26

    Where 子句中有两个条件的总和的 SQL 语句错误

  27. 27

    具有两个不确定参数的方法?

  28. 28

    Rails:具有两个方法的相同模板

  29. 29

    具有相同方法的两个接口

热门标签

归档