为什么Haskell中使用import语句后缩进代码会触发报错
问题原因
- Haskell基于**布局规则(Offside Rule)**解析代码结构,要求所有顶层声明必须与首个出现的顶层声明保持相同缩进级别。
import语句属于顶层声明范畴,当你将import Data.Char顶格编写时,编译器会将「顶格」判定为当前文件所有顶层声明的标准缩进值。后续缩进的example函数声明缩进级别高于标准值,会被编译器识别为import语句的从属代码块,但import语句本身不支持从属内容,因此直接抛出parse error on input ‘example’错误。- 无
import语句时,首个顶层声明为缩进后的example函数,编译器会将该缩进级别作为顶层声明的标准值,只要后续其他顶层声明与该级别对齐就不会触发错误,因此会出现「函数可以随意缩进」的表现。
解决方法
- 方案一:遵循Haskell通用编码规范,所有顶层声明(含import语句、函数定义、类型声明等)全部顶格编写
import Data.Char example = isLower
- 方案二:如果需要统一缩进所有顶层代码,保持
import语句和后续所有顶层声明的缩进级别完全一致即可
import Data.Char example = isLower
内容的提问来源于stack exchange,提问作者Zimanz
相关产品推荐
相关产品推荐

