2015-03-05 4 views
2

Я создаю приложение на основе 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? Есть ли способ импортировать все модули из каталога и получить список, с которым я могу работать?

+2

Вы можете использовать междусобойчик для создания модуля Controllers.Index во время конфигурирования , вероятно. – user2407038

+2

Вы имеете в виду создание файла 'Index.hs' из' Setup.hs'? Это довольно умно. Я полагаю, что я прав, полагая, что в Haskell нет ничего, что позволит мне импортировать модули динамически? (этот билет фактически подтверждает это: https://ghc.haskell.org/trac/ghc/ticket/1475) – framp

+1

Да, вы не можете динамически импортировать модули. Я считаю, что приоритет в этом билете довольно низок, поэтому вы не должны ожидать ничего подобного в ближайшее время. – user2407038

ответ

0

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

https://hackage.haskell.org/package/imports

 Смежные вопросы

  • Нет связанных вопросов^_^