Haskell 在输入时不断获取分析错误“::&引用;在哈斯克尔?

Haskell 在输入时不断获取分析错误“::&引用;在哈斯克尔?,haskell,Haskell,这是我的代码在运行它时,我经常会遇到一个解析错误::为什么是这样?我如何解决这个问题?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

这是我的代码在运行它时,我经常会遇到一个解析错误::为什么是这样?我如何解决这个问题?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
由于第二行比第一行缩进更多,Haskell假定它是该类型声明的延续。它被解析为:

type BMI = Float

  bmi :: Height -> Mass -> BMI
这是一个语法错误,因为你不能只在<代码>中间的<<代码>::/>代码> < /Cord>声明> < /P> 修正:确保所有行缩进相同。在本例中,您可能根本不需要任何缩进:

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

我在这里看到两个问题。一是您已经为
bmi
声明了两次类型签名。另一个是你有不应该缩进的缩进块。你可以使用缩进,但它必须是相同的缩进。
type BMI = Float

bmi :: Height -> Mass -> BMI

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