在 Python 中,如果给定的包存在,我可以选择运行一些代码,如下所示:
try:
import asd
# do something with asd
except ImportError:
print "no module asd"
有没有等效的 Haskell?
在 Python 中,如果给定的包存在,我可以选择运行一些代码,如下所示:
try:
import asd
# do something with asd
except ImportError:
print "no module asd"
有没有等效的 Haskell?
不是直接的,因为模块导入是在编译时用 GHC 解析的。但是,如果您使用的是Cabal (而且您应该是!),您可以根据配置标志有条件地依赖一个包,然后CPP
根据该依赖项是否存在使用扩展来编译代码:
#if MIN_VERSION_somepackage(0,0,0)
...code using somepackage...
#else
...code not using somepackage...
#endif
不过,这有点尴尬,所以我不建议使用它,除非你真的需要它......
不会。Haskell 编译器会拒绝任何导入它找不到的模块的程序,就像它会拒绝使用未定义的函数一样。
此外,如果您使用plugins,您可能能够在运行时使用新库。