在Haskell世界中,什么是autotools的替代品?我希望能够在相同源代码的不同配置之间进行选择.
例如,Haskell中至少有两个MD5实现:Data.Digest.OpenSSL.MD5
和Data.Digest.Pure.MD5
.我想以这样的方式编写代码,它可以找出已安装的库,并且不需要安装另一个库.
在CI中可以使用Autotools/Scons/CMake + cpp
.在Python中,我可以抓住ImportError
.我应该在Haskell中使用哪些工具?
build-automation configuration haskell conditional-compilation
我的项目中有一个虚拟模块,其唯一目的是为库的其余部分保存Haddock文档.其实我并不需要这个模块中输入任何东西,但如果我不导入其他模块,黑线鳕不会将超级链接功能名称及其模块.
我的模块看起来像这样
{- |
Lots of Haddock text here... it references 'someFunction'.
-}
module TopLevelDoc () where
import Other.Module.With.SomeFunction
Run Code Online (Sandbox Code Playgroud)
现在,如果我构建项目,我会收到此警告:
Warning: The import of `Other.Module.With.SomeFunction' is redundant
except perhaps to import instances from `Other.Module.With.SomeFunction'
To import instances alone, use: import Other.Module.With.SomeFunction()
Run Code Online (Sandbox Code Playgroud)
如果我删除导入或制作它们()
,Haddock不会超链接someFunction
到其文档.如果我按原样留下这样的进口,我会收到许多我不喜欢的错误警告.而且我不想为整个项目抑制这种警告,它可能对任何其他模块都有用,但是这个.
问题:
ghc-options
的.cabal
)Neatimage使用哪种算法来消除照片中的噪点和纹理?我知道这是专有软件,但可能有人有想法.欢迎参考出版物或类似算法.
FileNotFoundException
在尝试使用外部库时,我在Clojure REPL中收到.例如,我创建了一个新项目lein new example-twitter-project
.然后我编辑文件:
project.clj
:
(defproject example-twitter-project "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.3.0"]
[clojure-twitter "1.2.6-SNAPSHOT"]])
Run Code Online (Sandbox Code Playgroud)
src/example-twitter-project/core.clj
:
(ns example-twitter-project.core
(:use 'twitter))
Run Code Online (Sandbox Code Playgroud)
然后我跑lein deps
,然后lein repl
.
example-twitter-project$ lein repl
REPL started; server listening on localhost port 23833
user=> (use :reload-all 'example-twitter-project.core)
FileNotFoundException Could not locate quote/twitter__init.class or quote/twitter.clj on classpath: clojure.lang.RT.load (RT.java:430)
Run Code Online (Sandbox Code Playgroud)
同时,我可以use
直接从REPL中获取外部库:
user=> (use 'twitter)
nil
user=> (doc twitter/with-oauth)
-------------------------
twitter/with-oauth
([consumer access-token access-token-secret & body])
Macro
Set the …
Run Code Online (Sandbox Code Playgroud)