在 Haskell 中动态导入模块
Dynamically importing modules in Haskell
我正在构建一个基于 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
的最佳方法是什么?
有没有办法从目录中导入所有模块并获得我可以使用的列表?
有点晚了,但是这个包有助于从设置中生成所需的导入,如评论中所建议的那样:
我正在构建一个基于 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
的最佳方法是什么?
有没有办法从目录中导入所有模块并获得我可以使用的列表?
有点晚了,但是这个包有助于从设置中生成所需的导入,如评论中所建议的那样: