在Haskell中动态导入模块

时间:2015-03-05 23:46:24

标签: haskell scotty

我正在构建一个基于Scotty的应用程序,并且我正在尝试导入并添加目录中包含的动态中间件列表。

我不想对我的中间件列表进行硬编码 - 但截至目前,我正在使用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的最佳方法是什么? 有没有办法从目录导入所有模块并获得我可以使用的列表?

1 个答案:

答案 0 :(得分:0)

有点晚了,但是这个软件包有助于从设置中生成所需的导入,如评论中所示:

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