Импорт новых типов из другого модуля

В последнее время я изучаю 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 at src/Main.purs строка 30, столбец 10 - строка 30, столбец 18

Unknown data constructor Vec3

См. https://github.com/purescript/documentation/blob/master/errors/UnknownName.md для получения дополнительной информации или для добавления контента, связанного с этой ошибкой.

Я новичок в функциональном программировании, а также в PureScript. Что означает эта ошибка?


person Sri Harsha Chilakapati    schedule 06.12.2017    source источник


Ответы (1)


module Transforms (Vec2, Vec3, perspectiveDivide) where экспортирует только конструкторы типов.

Вы также хотите использовать Vec2(..) для экспорта конструкторов данных. Тот же синтаксис работает для импорта.

person Christoph Hegemann    schedule 06.12.2017