标签: clojure

如何在Clojure中为函数参数创建默认值

我来这个:

(defn string->integer [str & [base]]
  (Integer/parseInt str (if (nil? base) 10 base)))

(string->integer "10")
(string->integer "FF" 16)

但它必须是一个更好的方法来做到这一点.

function clojure default-value optional-parameters

121
推荐指数
5
解决办法
5万
查看次数

在Clojure中,如何将String转换为数字?

我有各种各样的字符串,有些像"45",有些像"45px".我如何将这两个转换为45?

clojure

121
推荐指数
8
解决办法
8万
查看次数

117
推荐指数
6
解决办法
3万
查看次数

leiningen - 如何为本地jar添加依赖项?

我想用leiningen来构建和开发我的clojure项目.有没有办法修改project.clj告诉它从本地目录中挑选一些罐子?

我有一些专有的罐子无法上传到公共回购.

另外,leiningen可以用来维护clojure项目的"lib"目录吗?如果我的一堆clojure项目共享相同的jar,我不想为每个jar维护一个单独的副本.

谢谢

java build clojure maven leiningen

112
推荐指数
6
解决办法
4万
查看次数

Clojure,Scheme/Racket和Common Lisp有什么区别?

我知道他们是同一个语言家族的方言,称为lisp,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题.

lisp scheme clojure common-lisp racket

112
推荐指数
3
解决办法
3万
查看次数

组合路线背后的"大创意"是什么?

我是Clojure的新手,并且一直在使用Compojure编写基本的Web应用程序.不过,我正在用Compojure的defroutes语法碰壁,我认为我需要理解它背后的"如何"和"为什么".

看起来像Ring样式的应用程序以HTTP请求映射开始,然后只是通过一系列中间件函数传递请求,直到它被转换为响应映射,然后将其发送回浏览器.对于开发人员来说,这种风格似乎太"低级",因此需要像Compojure这样的工具.我可以看到在其他软件生态系统中需要更多的抽象,尤其是Python的WSGI.

问题是我不了解Compojure的方法.我们采用以下defroutesS表达式:

(defroutes main-routes
  (GET "/"  [] (workbench))
  (POST "/save" {form-params :form-params} (str form-params))
  (GET "/test" [& more] (str "<pre>" more "</pre>"))
  (GET ["/:filename" :filename #".*"] [filename]
    (response/file-response filename {:root "./static"}))
  (ANY "*"  [] "<h1>Page not found.</h1>"))
Run Code Online (Sandbox Code Playgroud)

我知道理解所有这些的关键在于一些宏观伏都教,但我还没有完全理解宏(还).我已经盯着defroutes源头很长一段时间了,但就是不明白!这里发生了什么?理解"大创意"可能会帮助我回答这些具体问题:

  1. 如何从路由功能(例如workbench功能)中访问Ring环境?例如,假设我想访问HTTP_ACCEPT标头或请求/中间件的其他部分?
  2. 什么是解构({form-params :form-params})?在解构时我可以使用哪些关键字?

我真的很喜欢Clojure,但我很难过!

clojure compojure

107
推荐指数
2
解决办法
2万
查看次数

Ref,Var,Agent,Atom之间的Clojure差异,以及示例

我是Clojure的新手,你能不能给我解释现实场景.我的意思是,在哪里使用Ref,Var,Agent,Atom.我读过书,但是,仍然无法理解现实世界的例子.

var clojure agent

105
推荐指数
5
解决办法
2万
查看次数

在Grails 2.0.0运行时生成的Clojure 1.2.1/1.3/1.4'代理失败.1.2.0很好

我正在努力在Grails 2.0.0(和2.1.0-SNAPSHOT)中扩展Grails Clojure插件,我想将它更新为Clojure 1.3.0并添加clojure.tools.logging.

Clojure的一个编译过程中抛出一个异常 代理一的ByteArrayOutputStreamclojure.tools.logging的日志流功能:

ClassCastException: clojure.asm.Type cannot be cast to clojure.lang.IFn

(https://gist.github.com/a6ae681c37091a3d2379)

我去和删除clojure.tools.logging,并写了一个剥离下来的代理Object:

(proxy [java.lang.Object] [] (toString [] "proxy's toString"))

它也扔了同样的ClassCastException信息.

我试图打印macroexpand-1的的代理,得到了同样的事情.

我恢复到Clojure 1.2.0并且代理工作再次正常.

我尝试了1.4.0的许多版本,它们表现出与1.3.0相同的行为.1.2.1也引发了某种异常,但我试图达到1.3.0,所以我没有花太多时间.

堆栈跟踪指向"GEN-方法功能的一项所定义的的形式generate-proxycore_proxy.clj.

println在那附近添加了一小部分,看看我能不能发现正在发生的事情.也许下一个陈述会背叛读者对我的巨大误解,但只是添加那些println改变了编译时行为的方式我完全没想到.异常位置和异常类型完全改变,即使所有Clojure测试mvn package继续通过.

例如,println在开始生成字节码之前,只需在gen-method中添加一个单元,就会导致Clojure抛出

ClassCastException: clojure.lang.PersistentArrayMap cannot be cast to …

proxy grails groovy clojure

103
推荐指数
1
解决办法
2507
查看次数

用于匹配未跟随某个其他子字符串的子字符串的正则表达式

我需要一个匹配blahfooblah但不匹配的正则表达式blahfoobarblah

我希望它只匹配foo和foo周围的所有东西,只要它没有跟着bar.

我尝试使用它:foo.*(?<!bar)它非常接近,但它匹配blahfoobarblah.背后的负面看法需要匹配任何东西而不仅仅是酒吧.

我正在使用的特定语言是Clojure,它使用Java正则表达式.

编辑:更具体地说,我也需要通过blahfooblahfoobarblah但不是blahfoobarblahblah.

java regex clojure

102
推荐指数
2
解决办法
7万
查看次数

剂量q和Clojure之间的差异

doseq和Clojure之间有什么区别?什么时候你选择使用一个而不是另一个?

clojure

100
推荐指数
2
解决办法
2万
查看次数