リスト内包表記は、再帰に比べてほとんど不可能だと思います。「te1234ST」などの文字列を取得して「TEST」を返そうとしています。簡単に思えますが、制限があります。isAlpha などの Haskell 定義済み関数の使用は許可されておらず、リスト内包表記でなければなりません。
私がこれまでに費やしてきた時間の割にはひどいものです:
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
私はこれを機能させようとしているだけで、小文字を大文字に変更することについてまだ心配し始めていません。
正しい方向のポイントは非常に高く評価されます。
編集: 使用できない下位から上位への変換について言及する必要があります: if, then, else. 内包表記と演算子をリストするだけです。