与递归相比,我发现列表理解几乎是不可能的。我正在尝试获取诸如“te1234ST”之类的字符串并返回“TEST”。似乎很容易,但有限制。不允许使用任何 Haskell 预定义函数,例如 isAlpha,它必须是列表解析。
到目前为止我所拥有的,这对于我花了多长时间来说非常糟糕:
convertAllToUpper :: String -> String
convertAllToUpper xs = [n |n <- xs, check n == True]
-- This may not even be allowed, and I know it's incorrect anyway
check :: n -> Bool
check (n:ns)
| n `elem` ['a'..'z'] = True
| n `elem` ['A'..'Z'] = True
| otherwise = False
我只是想让它工作,我什至还没有开始担心将小写字母更改为大写字母。
任何正确方向的观点都将非常感激。
编辑:应该提到从低到高的转换不能使用:如果,那么,否则。简单地列出理解和列出运算符。