我正在努力解决以下问题:
鉴于:
类型
data T=AA | BB | CC deriving (Show)
输入
一串
str
我正在尝试查找给定字符串中出现的所有数据构造函数,并将它们附加到输出:
例子
以下内容:
输入:
"AABCC"
输出:
[AA,CC]
基本上,我尝试解析字符串,如果前缀匹配,我会将元组的第二个元素附加到结果中,并从输入字符串中截断长度。否则,我将截断1个元素,然后重试。
titles = [("AA",AA),("BB",BB),("CC",CC)]
rds::String->[T]
rds str = go str where
go []=[]
go (x:xs)=case filter ((isPrefixOf str).fst) titles of
(name,value):_ ->value:go (drop (length name) (x:xs))
[] -> go xs
该方法仅适用于1个元素,例如:
"AA"
.当尝试更大的输入时,我得到
[]
结果。
我想这与我没有将结果绑定到
go
是吗?做
去
必须将结果作为其参数,例如:
go [] str;go result []=result ; go result (x:xs)=....
是吗?