小编use*_*321的帖子

为什么这个定义不涵盖所有模式案例?

所以我正在尝试triplize一个元素,即制作该元素的另外两个副本.

所以我写了这个:

triplize :: [a] -> [a]
triplize [x] = concatMap (replicate 3) [x]
Run Code Online (Sandbox Code Playgroud)

但我一直在收到这个错误:

Non-exhaustive patterns in function triplize
Run Code Online (Sandbox Code Playgroud)

我是Haskell的新手,所以任何指针都值得赞赏!

haskell non-exhaustive-patterns

5
推荐指数
1
解决办法
106
查看次数

Haskell - 如何遍历列表和反转元素

我无法在Haskell中查找有关简单操作的文档.

我有名单(名单:: [[a]]),我需要扭转所有的元素列表的x地方length x >= 2.

到目前为止,我还没有找到任何东西:

  • 如何遍历列表

  • 我怎样才能找到元素的长度.有length我可以使用的功能,但我还不知道如何使用它.

我确实找到了reverse列表的功能,但我找不到它.

如果对这些个别实施有任何帮助,我们将不胜感激.我可以把它们拼凑起来.

haskell

-1
推荐指数
1
解决办法
1263
查看次数

Haskell - 在n位置更改元素?编译错误?

所以我有这个功能

listSet :: [a] -> Integer -> a -> [a]
listSet l n x = 
    let (xs,_:ys) = splitAt n l
    xs ++ x : ys
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

:25:9:let绑定中的解析错误:缺少必需的'in'

我想要解决这个问题的原因是什么?

我的逻辑是正确的,在第n个位置拆分并在列表的开头添加一个元素?

任何关于错误或代码的帮助将不胜感激!

编辑:无论如何使这个代码工作而不将Integer更改为Int?

haskell

-1
推荐指数
1
解决办法
240
查看次数

Haskell - 如何将此列表与所有元素组成元组函数?

所以我有

pair:: [a] -> [b] -> [(a,b)]
pair[] _ = []
pair(x:xs) (y:ys) = (x, y) : prod xs ys
Run Code Online (Sandbox Code Playgroud)

但结果如下:

>> pair [1,2] [3,4]
>> [(1,3),(2,4)]
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能这样搭配:

[(1,3),(1,4),(2,3),(2,4)]
Run Code Online (Sandbox Code Playgroud)

haskell

-4
推荐指数
1
解决办法
522
查看次数

标签 统计

haskell ×4

non-exhaustive-patterns ×1