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

Haskell 如果包存在,可以选择运行代码,haskell,Haskell,在Python中,如果给定的包是这样存在的,我可以选择运行一些代码: try: import asd # do something with asd except ImportError: print "no module asd" 是否存在Haskell等价物?否。Haskell编译器将拒绝任何导入找不到的模块的程序,就像拒绝使用未定义的函数一样。否。Haskell编译器将拒绝任何导入找不到的模块的程序,就像拒绝使用未定义的函数一样。不是直接,因为模块导入是在编译时用GHC解析的

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

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

是否存在Haskell等价物?

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

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

不是直接,因为模块导入是在编译时用GHC解析的。但是如果您正在使用(而且您应该是!),您可以根据a有条件地依赖一个包,然后根据依赖关系是否存在,使用
CPP
扩展来编译代码:

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

不过这有点尴尬,所以我不建议使用它,除非您真的需要它…

不是直接使用,因为模块导入是在编译时用GHC解决的。但是如果您正在使用(而且您应该是!),您可以根据a有条件地依赖一个包,然后根据依赖关系是否存在,使用
CPP
扩展来编译代码:

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

不过,这有点尴尬,所以我不建议您使用它,除非您确实需要它。

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

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

您可以使用while语句在您有程序包时运行程序,否则程序包将不运行。您可以使用while语句在您有程序包时运行程序,否则程序包将不运行。