Haskell 从括号之间提取文本

Haskell 从括号之间提取文本,haskell,Haskell,我试图从括号之间提取文本,理想情况下,得到一个包含括号内容的字符串列表。范例 "ab(cde)fgh(ij)k" -> ["cde", "ij"] 我得到这个错误: Couldn't match type '[Char]' with `Char' Expected type: [Char] -> [Char] Actual type: [Char] -> [[Char]] 您的代码中有一些问题,

我试图从括号之间提取文本,理想情况下,得到一个包含括号内容的字符串列表。范例

"ab(cde)fgh(ij)k" -> ["cde", "ij"]
我得到这个错误:

Couldn't match type '[Char]' with `Char'
    Expected type: [Char] -> [Char]
      Actual type: [Char] -> [[Char]]

您的代码中有一些问题,但我希望我理解其中的含义

首先是您的
组合
——如果您看看如何使用它:它应该返回您的
提取
返回的内容(从您的示例中是
字符串
)的列表),第二个参数是相同的类型(因为它是递归的
提取
)的结果——因此它需要有类型(或者可以与之统一的类型)
字符串->[String]->[String]
-查看它应该做什么这实际上只是列表的缺点(
操作符)

接下来,您以一种我认为您并不真正想要的方式混合了
x,y,z
——您与
y
组合,但是
y
似乎是第一个
的一部分(您发现的
——但是您想要收集
(…)
——类似于您定义和使用
z
的方式

最后,修复代码可以正常工作,但您也可以收集

这是一个版本,为您修复这些内容:

extract::String->[String]
提取文本
|null begin=[]
|否则=部分:提取剩余部分
哪里
begin=dropWhile(/=“(”)txt
后=尾部开始
part=takeWhile(/=')之后
静止=落下(长度部分+1)后

注意仍然存在一个问题(请尝试
“ab(cde)fgh(ij)k(hmmmm”
,看看会发生什么)-我相信你现在可以自己修复它。

出了什么问题?从第一次阅读来看,我猜编译器会给你一个类型错误。如果是这样,你理解错误的哪些部分?你觉得混淆了哪些部分?@DanielWagner这是一个类型错误。其中一个函数需要一个字符串,但会得到一个字符,或者反过来。我不知道是什么这是一个提示:当你遇到一个你不理解的错误时,在你的问题中贴出这个错误的文本通常会有帮助,这样回答问题的人就可以看到哪里出了问题。
Couldn't match type '[Char]' with `Char'
    Expected type: [Char] -> [Char]
      Actual type: [Char] -> [[Char]]