小编Aas*_*ari的帖子

在Haskell中旋转函数

我想在Haskell中编写一个函数,它将第二个参数给出的列表旋转第一个参数指示的位置数.使用模式匹配,实现递归函数

我写了以下函数:

rotate :: Int -> [a] -> [a]
rotate 0 [y]= [y]
rotate x [y]= rotate((x-1) [tail [y] ++ head [y]])
Run Code Online (Sandbox Code Playgroud)

但此功能总是会产生错误.有什么办法可以解决吗?该函数在运行时应执行以下操作:

rotate 1 "abcdef"
"bcdefa"
Run Code Online (Sandbox Code Playgroud)

recursion haskell pattern-matching

2
推荐指数
1
解决办法
214
查看次数

Haskell中的正确前缀功能

我想创建一个打印列表前缀的Haskell函数:

该功能应该执行以下操作:

> prefixes "123"
["","1","12"]
> prefixes "1"
[""]
Run Code Online (Sandbox Code Playgroud)

我写了以下代码:

prefixes :: [a] -> [[a]]
prefixes [] = []:[]
prefixes f =  f : prefixes(init(f)) 
Run Code Online (Sandbox Code Playgroud)

该函数将输入的字符串或字符作为前缀打印,并以相反的方向打印.我想删除它,所以当我输入"123"时,它应该如上所示打印并以正确的方向显示.

我们可以用:

reverse (drop 1 f)
Run Code Online (Sandbox Code Playgroud)

命令,但我不知道如何在我的函数中实现它.

你可以帮我解决这个问题,以便它能正确打印出来.

haskell

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

标签 统计

haskell ×2

pattern-matching ×1

recursion ×1