在OPTIONS编译指示中设置导入路径

时间:2018-08-04 04:01:45

标签: haskell ghc pragma

根据GHC 8.4.3 flag reference-i标志是 dynamic ,表示it should be settable by an OPTIONS pragma

所以我尝试了以下操作:

.
├── Main.hs
└── imp
    └── Imported.hs

imp/Imported.hs的内容:

module Imported (foo) where

foo :: String
foo = "Foo"

Main.hs的内容:

{-# OPTIONS_GHC -iimp #-}
import Imported (foo)

main :: IO ()
main = putStrLn foo

但是,如果我尝试使用Main.hs运行runhaskell,它将抱怨找不到Imported

$ runhaskell -v Main.hs
...
Main.hs:2:1: error:
    Could not find module ‘Imported’
    Locations searched:
      Imported.hs
      Imported.lhs
      Imported.hsig
      Imported.lhsig

如何在-i编译指示中指定OPTIONS标志?

1 个答案:

答案 0 :(得分:2)

这似乎是文档错误的回归,该错误在2007年为fixed,然后在2014年再次中断,当时在标记参考表中将一堆“静态”更改为“动态”。根据链接的错误报告,-i标志不是完全动态的。在GHCi中可以为:set,但不能在OPTIONS_GHC行中指定。