从另一个模块导入新类型

Sri*_*ati 3 newtype purescript

我最近正在学习PureScript,并做了一个小应用程序,可以在屏幕上绘制一个立方体。一切都很好,我newtypeMain模块顶部定义了一些,如下所示:

newtype Vec2 = Vec2
    {
        x :: Number
    ,   y :: Number
    }

newtype Vec3 = Vec3
    {
        x :: Number
    ,   y :: Number
    ,   z :: Number
    }
Run Code Online (Sandbox Code Playgroud)

我还获得了一些进行转换等功能的功能,perspectiveDivide我想移至另一个模块Transforms以更好地组织。因此,我将这些类型移到了“转换”模块中,并导出了它们。

module Transforms (Vec2, Vec3, perspectiveDivide) where
Run Code Online (Sandbox Code Playgroud)

并且上述类型遵循此。

现在,我尝试使用选择性导入功能将它们导入到主模块中,但是没有用。

import Transforms (Vec2, Vec3, perspectiveDivide)
Run Code Online (Sandbox Code Playgroud)

但是在尝试使用projectToScreen仍在主模块中的函数时,仍然给我一个错误。错误是这样的:

在src / Main.purs模块Main中的第30行第10列-第30行第18列中

Unknown data constructor Vec3
Run Code Online (Sandbox Code Playgroud)

请参阅 https://github.com/purescript/documentation/blob/master/errors/UnknownName.md 了解更多信息,或提供与此错误相关的内容。

我既是函数式编程的新手,也是PureScript的新手。这个错误是什么意思?

Chr*_*ann 5

module Transforms (Vec2, Vec3, perspectiveDivide) where 仅导出类型构造函数。

您还想使用Vec2(..)导出数据构造函数。相同的语法适用于导入。