在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(!你應該是),你可以有條件地根據configuration flag取決於封裝,然後用CPP
擴展取決於依賴是否存在編譯代碼:
#if MIN_VERSION_somepackage(0,0,0)
...code using somepackage...
#else
...code not using somepackage...
#endif
這是一種尷尬,雖然,所以我不建議使用它,除非你真的需要它...
編號Haskell編譯器會拒絕任何導入找不到的模塊的程序,就像拒絕使用未定義的函數一樣。
此外,您可能能夠在運行時,如果你使用plugins使用新庫。