保持在Haskell得到一个解析错误输入“::”?

问题描述 投票:-2回答:1
type Mass = Float
type Height = Float
type BMI = Float

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


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

这是我的代码运行它时,我不断收到关于::语法错误,这是为什么我怎么能解决这个问题

haskell
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.