在Haskell中不断在输入“ ::”上获得解析错误?

时间:2019-02-09 16:17:53

标签: haskell

type Mass = Float
type Height = Float
type BMI = Float

  bmi :: Height -> Mass -> BMI
  bmi :: Height-> Mass -> BMI


  bmi heightM weightKg = weightKg/(heightM/100)^2

这是我运行时的代码,我不断在::上遇到解析错误:为什么这要怎么解决呢?

1 个答案:

答案 0 :(得分:7)

Haskell代码的结构取决于其格式和缩进。

尤其是:

type BMI = Float

  bmi :: Height -> Mass -> BMI

由于第二行比第一行缩进更多,Haskell假定它是该类型声明的延续。解析为:

type BMI = Float bmi :: Height -> Mass -> BMI

这是语法错误,因为您不能只是在::声明的中间插入type

修复:确保所有行都缩进相同。在此示例中,您可能根本不需要任何缩进:

type BMI = Float

bmi :: Height -> Mass -> BMI

^ -- 'type' and 'bmi' start in the same column