从另一个模块导入Newtype

时间:2017-12-06 14:47:26

标签: purescript newtype

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

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

newtype Vec3 = Vec3
    {
        x :: Number
    ,   y :: Number
    ,   z :: Number
    }

我还有一些函数可以执行转换,例如perspectiveDivide等,我想移动到另一个模块Transforms只是为了更好地组织。所以我将这些类型移动到Transforms模块,然后将它们导出。

module Transforms (Vec2, Vec3, perspectiveDivide) where

以上类型如下。

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

import Transforms (Vec2, Vec3, perspectiveDivide)

但是在尝试使用仍在主模块中的函数projectToScreen时仍然会出错。错误是这样的:

  

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

Unknown data constructor Vec3
     

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

我既是功能编程的新手,也是PureScript的新手。这个错误意味着什么?

1 个答案:

答案 0 :(得分:3)

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

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