You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Haskell中统计文件单词数及无换行输出出现百分号的问题

问题解答

1. 输出末尾出现百分号的原因

你观察到的末尾百分号不是Haskell程序输出的内容,是Zsh、Fish这类现代Shell的特性:当程序的标准输出没有以换行符结尾时,Shell会在输出末尾追加一个百分号(多数还会标红高亮),再换行展示Shell提示符,避免提示符直接接在程序输出的同一行导致可读性差。切换到Bash执行同一份无换行输出的代码,就不会出现这个百分号。

2. Haskell实现文件单词数统计的方法

统计文件单词数可以直接用Haskell Prelude内置的words函数,它会自动把输入字符串按任意空白字符(空格、换行、制表符等)分割为单词列表,对列表取长度就是单词总数,实现代码如下:

main = interact wordCount
    where wordCount input = show (length (words input)) ++ "\n"

拿你的测试文件验证:文件内容Teignmouth, England传入words后会得到列表["Teignmouth,", "England"],取长度得到的结果2就是正确的单词数。如果你需要把标点和单词拆分(比如排除Teignmouth,里的逗号,把纯字母部分算作单词),只需要加一步字符串预处理过滤掉标点字符即可。

内容的提问来源于stack exchange,提问作者zootechdrum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:15:01