haskell - Haskell 中的字数统计程序

标签 haskell

我正在复习过去的考试,为即将到来的考试做准备,在完成几个问题后,我遇到了一个我无法解决的问题。

它需要一个函数,该函数将接受一个字符串(或 [Char])并返回字符串中英语单词数量的 Int。它说 isWord 是一个假设函数,它接受一个字符串并根据该单词是真还是假返回一个 bool 值。 单词必须从左到右排成一行。给出的例子是“catalogre”。所以“cat”、“at”、“catalog”、“ogre”和“log”,函数应该返回5。

wordsInString :: [Char] -> Int
wordsInString [] = 0
wordsInString x
    | isWord (take 1 x)
    | isWord (take 2 x)

保险杠只是显示了我的想法,显然它不会起作用。

这就是我开始的方式,我想我可以使用 take 函数并一次递增每个字母,然后将起始字母向下移动直到 [],但我不确定如何正确实现该递归。如果有人有任何想法或可以向我展示一种方法,那就太好了。

最佳答案

如果您知道如何区分单词和非单词,您可以使用 initstails获取所有可能的候选人列表:

> :m +Data.List
> concatMap inits $ tails "catalogre"
["","c","ca","cat","cata","catal","catalo","catalog","catalogr","catalogre","","a","at","ata","atal","atalo","atalog","atalogr","atalogre","","t","ta","tal","talo","talog","talogr","talogre","","a","al","alo","alog","alogr","alogre","","l","lo","log","logr","logre","","o","og","ogr","ogre","","g","gr","gre","","r","re","","e",""]

关于haskell - Haskell 中的字数统计程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224199/

相关文章:

optimization - Haskell 中的二次规划

haskell - 在程序中使用 Monad 有什么意义?

list - 如何从haskell中的元组列表中获取特定值?

haskell - 仅使用比较运算符计算列表中每个元素的频率

带有 GADT 的 Haskell 类型推断和类型变量的类型类约束

haskell - 有理数的平方根

haskell - 某些问题的最有效解决方案是否需要可变数据?

haskell - LISP 或 Haskell

haskell - 如何解决 Haskell 类型错误

haskell - 为什么这个在 where 子句中使用作用域类型变量的函数不进行类型检查?