Haskell中的递归函数

时间:2018-10-22 18:21:16

标签: haskell

我有一个将列表以n-1方式拆分的功能。拆分后,我想以递归方式对拆分的每个项目执行操作。由于我是Haskel的新手,所以我无法弄清楚该如何进行递归操作,也无法理解如何在Haskell中使用值

recur(list)= do [splitAt n list | n <- [1..((length list)-1)]]
                print say each first element of split( say [1,2] it should print [1] )
                recur(second element of list)

我想知道如何将split和acrry的输出用于下一步,因为Haskell我们不能使用变量声明并使用该变量。

1 个答案:

答案 0 :(得分:0)

首先编写有关您要对单个列表执行的操作的函数。为了简单起见,我假设您希望列表的第一个元素为字符串格式。但这可以是任何功能。

getFirstElement :: [a] -> String
getFirstEement [] = ""
getFirstElement (x:xs) = show x 

现在,您要在列表列表中运行并将其合并。您可以为其编写另一个函数。这样做是获得所有列表的第一个元素并将其组合

combineList :: [[a]] -> String
combineList [] = ""
combineList (x:xs) = getFirstElement x ++ <any separator if needed> ++ combineList xs

上面使用了非常基本的递归和模式匹配。组合列表的最后一行也可以使用fold函数编写。

进一步需要注意的是,存在一个称为“应用函子”的东西,其目的是“进行序列计算并组合其结果”。