2
IAM新Haskell和編程功能重複每一個字......沒有計數的時候使用哈斯克爾
我想在函數作爲字符串傳遞和統計沒有時間每個語法,例如(如果,否則,elseif for,while,dowhile)存在於使用haskell的函數中。
例如,如果給這樣
if(i=0){ for(i=0;i<num;i++){if(name== name)}
}elseif (i=3){for(i=3;i<num;i++){}}
else{while (i>3){name = name; i--;}}
我期望的輸出的輸入。(它有得到的倍沒有每個語法出現)
[(if,2),(for,2),(elseif,1),(else,1),(while,1)]
我已經做了編碼。如下所示
import Control.Arrow
syntaxCount :: String -> [(String, Int)]
syntaxCount = map (head &&& length) . group .sort . words
此功能可以正常工作,但會顯示如下結果。
[("(i=3){for(i=3;i<num;i++){}}",1),("(i>3){name",1),("=",1),("else{while",1),("for(i=0;i<num;i++){if(name==",1),("i--;}}",1),("if(i=0){",1),("name)}",1),("name;",1),("}elseif",1)]
誰能幫助我擺脫所有不需要的東西,得到這樣的結果..
[(if,2),(for,12),(elseif,1),(else,1),(while,1)]
謝謝。克里斯..你可以請解釋我這是什麼**導入合格Data.Map作爲地圖** .. – 2964349
@Sathyabaman我實際上刪除了這條線爲簡單起見。但是它導入模塊'Data.Map',但是導入它* qualified *,所以你必須通過在它們前面寫入'Data.Map.'來顯式聲明你正在使用該模塊中的函數。通過編寫'導入合格的Data.Map作爲Map',我給了它簡稱'Map',以便我可以使用它的函數作爲'Map.insert'而不是'Data.Map.insert'。 –
我很想知道爲什麼這是downvoted。 –