haskell:将小写字母改为字符串列表中的大写字母

时间:2015-05-05 10:44:55

标签: string list haskell

我的问题是,我想将列表["hello","wHatS", "up?"]的每个小写字母更改为大写字母。

map toUpper [x]无法正常工作......

它应该返回[“HELLO”,“WHATS”,“UP?”] ..

1 个答案:

答案 0 :(得分:6)

查看toUpper的类型,Char -> Char,但您有[[Char]]。这意味着你在这里有两层list functor,所以你应该将它映射两次。

出于教学原因,我们可以在这里使用map,如下所示:

map (map toUpper) yourList

括号在这里很重要,我们给map :: (a -> b) -> [a] -> [b]一个参数,并得到另一个类型为[Char] -> [Char]的函数(正如我们所需要的!)因为有限制。

了解仿函数后,您可能更愿意fmap<$>执行此任务:

(toUpper <$>) <$> yourList