不区分大小写,无需导入模块。我需要原始输出而不是较低的输出

Bil*_*lal 2 haskell loops module function block

这是我的代码:

x = ["Hello","Nice","WELCOME"]
y = "HELLO"
app x y = filter (isInfixOf (map to Lower y)) (map (map toLower) x)
Run Code Online (Sandbox Code Playgroud)

输出:应用程序 xy -> [“hello”]

我需要原始输出(“HELLO”),而不是不导入模块的较低输出。--

谢谢

Wil*_*sem 6

您应该只map toLower在过滤条件中,而不是对元素本身执行映射:

\n
app :: [String] -> String -> [String]\napp xs y = filter (isInfixOf (map toLower y) . map toLower) xs
Run Code Online (Sandbox Code Playgroud)\n

toLower x == toLower y但请注意,使用并不是进行不区分大小写匹配的好方法:某些字符没有大写/小写变体,并且以不区分大小写的方式匹配两个字符串的规则更加复杂。通常使用toCaseFold :: Text -> Text规范化文本来进行区分大小写的匹配。例如:

\n
ghci> map toLower "stra\xc3\x9fe" == map toLower "strasse"\nFalse\nghci> toCaseFold "stra\xc3\x9fe" == toCaseFold "strasse"\nTrue\n
Run Code Online (Sandbox Code Playgroud)\n