在Python中,如果给定的包存在,我可以选择运行一些代码:
try:
import asd
# do something with asd
except ImportError:
print "no module asd"
是否有Haskell等价物?
答案 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,则可以在运行时使用新库。