Haskell 是否在目录上执行通配符模块导入?

Haskell 是否在目录上执行通配符模块导入?,haskell,blaze-html,Haskell,Blaze Html,如果在名为视图的目录中有一组模块,我希望使用导入视图导入它们。*。相反,据我所知,当前的haskell习惯用法是创建一个导入所有这些文件的文件Views.hs 我的用例: 我正在用创建一个web应用程序。我的视图是用blaze html编写的,我导入并呈现它们如下: import Views.Posts.Index scotty 3000 $ do get "/" $ do posts <- getPosts blaze $ Views.Posts.Index.ren

如果在名为
视图
的目录中有一组模块,我希望使用
导入视图导入它们。*
。相反,据我所知,当前的haskell习惯用法是创建一个导入所有这些文件的文件
Views.hs

我的用例:

我正在用创建一个web应用程序。我的视图是用blaze html编写的,我导入并呈现它们如下:

import Views.Posts.Index

scotty 3000 $ do
  get "/" $ do
    posts <- getPosts
    blaze $ Views.Posts.Index.render posts

这可能是因为通配符导入会导致对函数的不明确引用。此外,通配符通常会导致代码不健壮,例如,在模式匹配中使用
,这意味着您在错过重要案例时不会收到警告。同样,使用通配符进行导入意味着它在代码中并不明确表示您所依赖的模块或正在导入的模块。您可以
导入视图。*
。然后安装一个不相关的库,该库有一个
模块视图。you.not.Expect
。“哎呀!”丹尼尔说得对!只允许相对导入,比如Ruby的require\u relative,怎么样<代码>相对导入视图。*对于库,来自包的相对含义,对于非包编译,来自当前源代码树的相对含义?可以工作,尽管定义正确的所需语义可能有点复杂。关于标题中的问题,历史,我想。Haskell 98没有分层模块,因此甚至不可能
导入视图。*
。然后没有人提出并主张这样一个特性,所以没有添加。这样一个特性可以使用GHC的PackageImports扩展安全地实现。看到了吗(所以,人们会这样想,它还没有登陆,这告诉我Haskell社区对它的需求并不是很大)
scotty 3000 $ do
  get "/" $ do
    mustache "views/posts/index"