【发布时间】:2018-10-02 20:03:14
【问题描述】:
我将通过Haskell 开始我对函数式编程的第一次探索。我在打印硬编码值时有点挣扎。我创建了一个模型,代表汽车及其可以行驶的档位。我想要做的只是在我调用printCar. 时打印我的硬编码civicNinetyOne 但是当我加载文件时我不断收到错误消息。我在下面发布了错误,这是一个缩进错误,但从我在LearnYouAHaskell 阅读的内容来看,调用函数声明是正确的。有人可以指出这个问题的原因吗?谢谢
错误
first_program.hs:10:1: error:
parse error (possibly incorrect indentation or mismatched brackets)
|
10 | printCar:: () -> Car | ^
代码
data Car = Car{
gears :: [String],
currentGear :: String,
brokeGears :: [String],
shiftStroke:: Strokes
}
let civicNinetyOne = Car ["gear1", "gear2", "gear3", "gear4", "gear5"] "gear1" ["gear4"] [("gear1","pull", "gear2"), ("gear2","push", "gear3"), ("gear3","skipShift", "gear5")]
printCar:: () -> Car
printCar = civicNinetyOne
【问题讨论】:
-
()在这里做什么? -
我读到
()->可以添加到函数声明中以指定不接收任何参数。->后面的值是返回类型。 Haskell 不是这样吗? -
不,你的函数声明中根本没有参数。
()是单位类型。 -
@jberryman 我更新了降价并修复了间距。现在的代码看起来和我的 .hs 文件一模一样。
-
您的直接问题是
let。它不像你认为的那样工作。当你解决这个问题时,()应该去。也许和printCar一起,因为它和civicNinetyOne完全一样。