2016-02-07 58 views
0

我试着将字符串转换为它独特的字符与整数计数器以下接口一起:转换独特的字符从字符串表煤焦诠释

empty :: Table k v 
insert :: Eq k => Table k v -> k -> v -> Table k v 
exists :: Eq k => Table k v -> k -> Bool 
lookup :: Eq k => Table k v -> k -> Maybe v 
delete :: Eq k => Table k v -> k -> Table k v 
iterate :: Table k v -> (b -> (k, v) -> b) -> b -> b 
keys :: Table k v -> (b -> k -> b) -> b -> b 
values :: Table k v -> (b -> v -> b) -> b -> b 

我的功能至今如下:

auxCharacterCounts :: String -> Table Char Int 
auxCharacterCounts (x:xs) 
| length (x:xs) > 1 = (Table.insert Table.empty x (length $ filter (\y -> y == x) (x:xs))) 

例如通过字符串“萨萨”到auxCharacterCounts,然后运行一个lookup tablename 's'会产生Just 3

给予ü表明我们在字符串“sassa”中出现了3次char's'。什么我坚持包装我的头如何让其他字符,所以说运行lookup tablename 'a'将产生结果Just 2(对字符串“sassa”)

我不知道如何运行此recursivly,我可以通过不知何故?但是如果我这样做了,它会发现char'''多几倍,并且可能会导致资源使用不安全?

干杯。

回答

1

收件的辅助功能

increment :: (Eq k, Num v) => Table k v -> k -> Table k v 

加入一种在表中的值。你可以使用你有的表函数来实现它。

然后扫描字符串,并为每个字符增加一次表格。

相关问题