无法根据用户定义的数据类型定义函数

时间:2020-05-10 15:07:52

标签: haskell

我正在学习教程,并且具有以下类型定义:

data Point = Point Float Float deriving (Show)
data Shape = Circle Point Float | Rectangle Point Point deriving (Show)

将具有这些定义的文件加载到ghci中,并希望使用来定义函数

surface :: Shape -> Float

我收到错误消息变量不在范围内:s​​urface :: Shape-> Float

我什至看不到我在哪里有变量,更不用说为什么我得到这个错误了!任何帮助表示高度赞赏。

2 个答案:

答案 0 :(得分:2)

GHCi找到surface的类型签名,但由于没有该函数的主体,因此无法解析文件。在Haskell中,不能声明函数,但不能定义函数。

如果您仍然需要加载文件,则可以添加surface = undefined

data Point = Point Float Float deriving (Show)
data Shape = Circle Point Float | Rectangle Point Point deriving (Show)

surface :: Shape -> Float
surface = undefined

答案 1 :(得分:1)

ghci中使用多行输入

Prelude> :{
Prelude| surface :: Shape -> Float
Prelude| surface = undefined
Prelude| :}

相关问题