Haskell中Improperly terminated character constant错误求助
解决Haskell列表平均值代码的语法错误
嘿,我一眼就瞅到你代码里的问题啦!你遇到的"Improperly terminated character constant"错误,根源就在那行代码里的'div'——在Haskell里,单引号'是用来定义单个字符常量的(比如'x'或者'3'),但你把三个字符的div塞进单引号里,编译器完全搞不懂这是什么,自然就报错说字符常量没正确结束啦。
正确的写法有两种:
- 中缀形式(更符合Haskell的惯用写法,可读性更强):把
div用反引号`包起来,作为中缀运算符使用:
average xs = sum xs `div` length xs
- 前缀形式:直接按照普通函数调用的方式,把参数用括号括起来:
average xs = div (sum xs) (length xs)
另外小提醒一下:div是整数除法,如果你的列表里是浮点数的话,可能需要用/代替,同时要把length的结果转换成浮点类型,比如写成average xs = sum xs / fromIntegral (length xs),不过这个是后话啦,先解决当前的语法错误就好~
内容的提问来源于stack exchange,提问作者Rahat Batool




