Я создаю приложение на основе Scotty, и я пытаюсь импортировать и добавлять список динамических промежуточных элементов, содержащихся в каталоге.Динамический импорт модулей в Haskell
Я не хочу жестко кодировать список промежуточного программного обеспечения, но на данный момент я использую Index.hs
, которые выставляют все средние страницы.
Скажем, у меня есть Main.hs
import Controllers.Index (endpoints)
...
main :: IO()
main = do
port <- read <$> getEnv "PORT"
scotty port $ do
middleware logStdoutDev
endpoints
Тогда в Controllers/Index.hs
:
module Controllers.Index
(endpoints) where
import Controllers.Order (order)
import Controllers.User (user)
...
import Web.Scotty (ScottyM)
endpoints :: ScottyM()
endpoints = order >> user >> ...
Каждый Controllers/*.hs
содержит промежуточное программное обеспечение.
Какой был бы лучший способ избавиться от Controllers/Index.hs
? Есть ли способ импортировать все модули из каталога и получить список, с которым я могу работать?
Вы можете использовать междусобойчик для создания модуля Controllers.Index во время конфигурирования , вероятно. – user2407038
Вы имеете в виду создание файла 'Index.hs' из' Setup.hs'? Это довольно умно. Я полагаю, что я прав, полагая, что в Haskell нет ничего, что позволит мне импортировать модули динамически? (этот билет фактически подтверждает это: https://ghc.haskell.org/trac/ghc/ticket/1475) – framp
Да, вы не можете динамически импортировать модули. Я считаю, что приоритет в этом билете довольно низок, поэтому вы не должны ожидать ничего подобного в ближайшее время. – user2407038