我是Haskell的新手,遇到了一个问题。问题是,我需要制作一个函数,该函数接收一个字符串并返回元组列表。元组将由(字符,该字符在字符串中出现的次数(组成。
到目前为止,我已经写了这篇文章。
charCountTup :: [Char] -> [(Char,Integer)]
charCountTup xs = map ( x -> (x, 1)) xs
字符串"的输入;你好"会给我
('H',1),('e',1),('l',1),('l',1),('o',1)].
我想要的是
('H',1),('e',1),('l',2),('o',1)]
我现在不想担心大写和小写。有谁更熟悉haskell,对如何根据元组的整数是否出现过一次来增加它有任何想法吗?
有点笨拙。。从技术上讲,它是一个带有"head"的偏函数,但我不认为"group"返回空字符串。我很懒,把你的"Integer"改成了"Int">
import Data.List (group, sort)
xs = "hello world"
count :: String -> [(Char,Int)]
count xs =
map (grp -> (head grp, length grp)) (group $ sort xs)
count xs
[('',1(,('d',1(
我刚刚意识到你可以使用列表理解来编写它。。
[(head grp, length grp) | grp <- (group $ sort xs)]