所以我正在尝试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中查找有关简单操作的文档.
我有名单(名单:: [[a]]
),我需要扭转所有的元素列表的x
地方length x >= 2
.
到目前为止,我还没有找到任何东西:
如何遍历列表
我怎样才能找到元素的长度.有length
我可以使用的功能,但我还不知道如何使用它.
我确实找到了reverse
列表的功能,但我找不到它.
如果对这些个别实施有任何帮助,我们将不胜感激.我可以把它们拼凑起来.
所以我有这个功能
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?
所以我有
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)