GHCi:无法在自定义类型上进行模式匹配

史密斯先生

我为Int类型的矢量定义了一个自定义类型:

data Vector = Vector Int Int Int

现在,我想定义一个将向量添加到另一个向量的函数,但是某种程度上语法是不正确的,尽管其语法与“学好了Haskell很好!”中使用的语法非常相似

首先尝试使用前缀表示法:

    Prelude> let vp :: Vector -> Vector -> Vector
    Prelude| vp (Vector a b c) (Vector d e f) = Vector (a+d) (b+e) (c+f)

    <interactive>:33:1: parse error on input ‘vp’

第二次尝试,使用中缀表示法:

    Prelude> let vp :: Vector -> Vector -> Vector
    Prelude| (Vector a b c) `vp` (Vector d e f) = Vector (a+d) (b+e) (c+f)

    <interactive>:35:1: parse error on input ‘(’

我正在使用GHCI v7.8.4

雅各布丹尼尔

只是缩进错误

Prelude> data Vector = Vector Int Int Int deriving Show
Prelude> :{
Prelude| let vp :: Vector -> Vector -> Vector
Prelude|     vp (Vector a b c) (Vector d e f) = Vector (a + d) (b + e) (c + f)
Prelude| :}
Prelude> vp (Vector 1 2 3) (Vector 4 8 12)
Vector 5 10 15

效果很好,所以也可以

Prelude> :{
Prelude| let vp :: Vector -> Vector -> Vector
Prelude|     Vector a b c `vp` Vector d e f = Vector (a + d) (b + e) (c + f)
Prelude| :}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在文本上进行模式匹配?

Swift 2.2中的自定义模式匹配无法按预期工作

(脚本)如何在“空类型”的代数数据类型上进行模式匹配

在简单的Shapeless HLIST上进行模式匹配

自定义模式匹配失败,原因是“枚举大小写不是类型的成员”

自定义构造函数Haskell上的模式匹配

自定义模块模式的TypeScript类型定义

是否可以在Iterable上进行模式匹配

自定义ExUnit断言和模式匹配

自定义类型类实例化:无法将预期类型“ b”与实际类型“ Int”匹配

无法在HttpMethod上进行模式匹配

是否可以在不编写自定义特征类的情况下对类型进行模式匹配?

Haskell:模式与自定义数据类型匹配

在scala上进行模式匹配

列表ADT的模式匹配自定义实现

自定义git凭据帮助程序无法在Windows上进行身份验证

在类型化数据集上进行模式匹配

ghci:Emacs haskell模式下的自定义提示

使用FIFO在自定义Shell上进行Rsync

模式匹配自定义数据类型

在JTable的行上进行自定义导航

在自定义视图上进行缩放无法正常工作

如何在自定义数据类型上进行内存映射的IO?

在命名水果的两列上进行自定义聚合

自定义数据格式和模式匹配

Scala:基于自定义类型的模式匹配

Elm 类型不匹配(用于自定义类型)

是否可以使用自定义相等运算符进行模式匹配?

检查发出变量的类型是否与自定义类型匹配