Экспорт нескольких модулей в один файл - PullRequest
1 голос
/ 22 сентября 2019

Мне нужно экспортировать два модуля в один файл на Haskell.Прямо сейчас у меня есть

module name (important,functions) where
module nameForTesting where

-- the code is here

, однако, это дает мне эту ошибку:

filename.hs:5:1: error: parse error on input ‘module’

Как мне это исправить?

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Насколько мне известно, вы не можете иметь несколько модулей в одном файле. Этот ответ , кажется, подтверждает это.

Однако вы можете создать второй модуль, реэкспортирующий некоторые функции.Итак, сначала мы создаем файл NameForTesting.hs с:

-- NameForTesting.hs
module NameForTesting where

important :: Int
important = 42

functions :: Int -> Int
functions = (42 +)

foo :: Int
foo = 21

Затем мы можем создать второй файл Name.hs, который импортирует модуль NameForTesting, но экспортирует только important и functions:

-- Name.hs
module Name(<b>important, functions</b>) where

import NameForTesting

Модуль Name будет экспортировать только important и functions, импортированные из модуля NameForTesting.

1 голос
/ 22 сентября 2019

Необходимо различать определение модуля и экспорт имен из этого модуля;это два отдельных шага.

Файл может определять только один модуль.Однако вы можете экспортировать имена, импортированные из других модулей, как часть этого модуля.Например,

module MyModule (foo, bar) where

import OtherModule (bar) -- Let's say bar :: Int -> String

foo :: Int -> Int
foo x = x + 3

MyModule не определяет bar;скорее он импортирует его из OtherModule, а затем экспортирует как часть самого себя.Пользователи MyModule получают доступ к bar без явного импорта OtherModule:

import MyModule

main = putStrLn (bar (foo 9))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...