haskell - 如何在 GHCi 中定义数据类型

标签 haskell

我正在读“Making Our Own Types and Typeclasses”的一部分,来自“为您学习 Haskell 大有裨益!”。

按照文本我在 GHCi 中编写代码并出现错误。

data Shape = Circle Float Float Float | Rectangle Float Float Float Float   
surface :: Shape -> Float

<interactive>:2:1: error:
    Variable not in scope: surface :: Shape -> Float

当我用文本编辑器编写代码并从 GHCi 加载时,它可以正常工作。

我应该如何在 GHCi 中定义数据类型?

最佳答案

你正确定义了数据类型,但是当你想在GHCi中输入多行语句时,你需要使用:{:},或者使用制作多行语句的另一种机制。因此,您可以输入:

Prelude> data Shape = Circle Float Float Float | Rectangle Float Float Float Float
Prelude> <b>:{</b>
Prelude| surface :: Shape -> Float
Prelude| surface (Circle _ _ r) = pi * r ^ 2
Prelude| surface (Rectangle x1 y1 x2 y2) = (abs $ x2 - x1) * (abs $ y2 - y1)
Prelude| <b>:}</b>

关于haskell - 如何在 GHCi 中定义数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59154523/

相关文章:

haskell - 我是否使用合理的等式推理来根据 foldr 定义过滤器?

haskell - GHC 阶段限制(模板 Haskell)

haskell - Haskell 中的调试循环

haskell - 是否有 Monad 的实例但没有 MonadFix 的实例?

haskell - Haskell 尾递归如何工作?

haskell - 如何处理 Haskell 中的表达式?

haskell - 函数组合和 forall'ed 类型

haskell - 汇总 Haskell 记录列表

performance - Haskell 计算性能

Haskell 管道过滤不同值