gpt4 book ai didi

haskell - 学习 Haskell : confusion with reverse function and recursion

转载 作者:行者123 更新时间:2023-12-03 14:40:07 25 4
gpt4 key购买 nike

我刚刚开始学习 Haskell,我正在尝试编写一个简单的函数,该函数接受一个字符串列表并反转列表中的每个字符串:

revComp :: [String] -> [String]
revComp [] = []
revComp [x] = [] ++ [reverse x]
revComp (x:xs) = revComp [xs]

当我尝试在 GHCI 中加载代码时,出现错误:
Couldn't match expected type `Char' with actual type `[Char]'
Expected type: String
Actual type: [String]

任何人都可以解释我的问题是什么以及在哪里?非常感谢。

最佳答案

前三行没问题。您的类型签名是正确的,第二行是正确的,第三行也是正确的。 (但是, [] ++ [reverse x][reverse x] 相同。)

然而,第四行是错误的。你不仅不会用x在右侧,但您有一个类型错误:revComp [xs]电话revComp具有 xs 的单元素列表作为它的唯一元素。在这里,x是列表的第一个元素,xs是列表的其余部分。所以,由于 xs有类型 [String] , [xs]有类型 [[String]] ,但是 revComp需要一个 [String] !您要反转 x ,并将其添加到反转列表其余部分的结果中。

您可以使用 revComp xs反转列表其余部分中的每个字符串,以及 (:)将值添加到列表中(与您在左侧使用的 x:xs 模式中看到的语法相同)。这应该足以让您修复最后一行的信息。顺便说一下,这使得第三行变得多余,因为 [x]只是 x:[] .

关于haskell - 学习 Haskell : confusion with reverse function and recursion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9610562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com