我對 Haskell 很陌生,遇到了一個問題。問題是我需要創建一個接收字串并回傳元組串列的函式。元組將由(字符,該字符在字串中出現的次數)組成。
到目前為止,我已經寫了這個。
charCountTup :: [Char] -> [(Char,Integer)]
charCountTup xs = map (\ x -> (x, 1)) xs
輸入字串“Hello”會給我
('H',1),('e',1),('l',1),('l',1),('o',1)].
我想要的是
('H',1),('e',1),('l',2),('o',1)]
我現在不想擔心大寫和小寫。任何更熟悉haskell的人對我如何根據它是否出現多次來增加我的元組整數有任何想法?
uj5u.com熱心網友回復:
有點笨拙......從技術上講,它是一個帶有“head”的部分函式,??但我不認為“group”回傳和空字串。我很懶,將您的“整數”更改為“整數”
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),('e',1),('h',1),('l',3),('o',2),(' r',1),('w',1)]
我剛剛意識到您可以使用串列推導來撰寫它..
[(head grp, length grp) | grp <- (group $ sort xs)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/517163.html
上一篇:使用變態(或任何遞回方案)選擇性地遞回到二叉樹的左子樹或右子樹
下一篇:Haskell編程風格偏好
