【发布时间】:2014-01-07 02:08:46
【问题描述】:
我是 Haskell 和函数式编程的新手...
我想将函数作为字符串传入,并计算每个语法(例如 (if,else, 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)]
【问题讨论】:
标签: haskell functional-programming