在OPTIONS pragma中设置导入路径

Cac*_*tus 9 haskell pragma ghc

根据GHC 8.4.3标志引用,该-i标志是动态的,这意味着它应该由一个OPTIONSpragma设置.

所以我尝试了以下方法:

.
??? Main.hs
??? imp
    ??? Imported.hs
Run Code Online (Sandbox Code Playgroud)

内容imp/Imported.hs:

module Imported (foo) where

foo :: String
foo = "Foo"
Run Code Online (Sandbox Code Playgroud)

内容Main.hs:

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

main :: IO ()
main = putStrLn foo
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试运行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
Run Code Online (Sandbox Code Playgroud)

如何-iOPTIONSpragma中指定标志?

K. *_*uhr 2

这似乎是一个文档错误的回归,该错误于 2007 年修复,然后在 2014 年重新被破坏,当时标志参考表中的一堆“静态”更改为“动态”。根据链接的错误报告,该-i标志不是完全动态的。它可以:set在 GHCi 中,但不能在OPTIONS_GHC一行中指定。