如果包存在,可以选择运行代码

时间:2012-04-04 01:17:55

标签: haskell

在Python中,如果给定的包存在,我可以选择运行一些代码:

try:
  import asd
  # do something with asd
except ImportError:
  print "no module asd"

是否有Haskell等价物?

3 个答案:

答案 0 :(得分:5)

不直接,因为模块导入是在编译时使用GHC解决的。但是如果你正在使用Cabal(你应该是!),你可以根据configuration flag有条件地依赖包,然后使用CPP扩展来编译代码,具体取决于是否存在依赖性:

#if MIN_VERSION_somepackage(0,0,0)
...code using somepackage...
#else
...code not using somepackage...
#endif

但这有点尴尬,所以除非你真的需要,否则我不建议使用它......

答案 1 :(得分:1)

没有。 Haskell编译器将拒绝任何导入无法找到的模块的程序,就像它将拒绝使用未定义的函数一样。

答案 2 :(得分:1)

此外,如果您使用plugins,则可以在运行时使用新库。

相关问题