Clojure:如何获得';坐标';?

假设我有一个函数,它取坐标x和y 对于x,我有一个值序列,比如[1,2,3],对于y,我有另一个值序列,比如[4,5,6] 我怎样才能得到包含所有这些组合的列表 因此,期望的结果是: (myfn [1 2 3] [4 5 6]) => [[1 4] [1 5] [1 6] [2 4] [2 5] [2 6] [3 4] [3 5] [3 6]] 有这样的函数吗?data>(对于[x[1 2 3]y[4 5 6]](向量x y)) data> (for [x [1 2 3] y [4 5

Clojure emacs粘液&x2B;swank目录问题

我将emacs与clojure swank和slime一起使用,并尝试设置我的开发环境。我遇到了一个问题。当我启动repl时,我被困在一个未知的目录中,无法加载我的命名空间。因为clojure repl找不到正确的文件 有人知道如何更改当前目录吗 附言:我刚开始使用emacs和slime,所以我是个笨蛋 简短回答: (加载文件“定义的完整路径”) 长答覆: 以下是我的引导过程: 在~/.clojure/user.clj中(启动slime/clojure时此文件自动运行): (添加类路径)file

类型擦除如何帮助Clojure存在?

JVM类型擦除如何帮助Clojure?没有它Clojure能生存吗?如果JVM已经具体化了类型,会发生什么?也就是说,Clojure将如何改变?我可以告诉你,Clojure不使用JVM中的类型擦除,因此我认为没有它不会有多大改变 Clojure一点变化都没有。类型擦除仅适用于泛型的Java类型参数。所有其他类型在运行时都可用 浏览时,它根本不太使用泛型。在中,它传递对象s并执行实例检查。通过将所有内容视为一个对象,它不需要泛型,因此不需要擦除类型参数

Clojure 复合路由问题

我有一个小型compojure站点,其路线定义如下: (defroutes example (GET "/" [] {:status 200 :headers {"Content-Type" "text/html"} :body (home)}) (GET "/*" (or (serve-file (params :*)) :next)) (GET "/execute/" [] {:status 200

修改“蛋糕测试”以控制堆栈跟踪深度(Clojure)

我想修改蛋糕测试,这样它就可以运行了 问题很简单: (deftask test #{compile} "Run project tests." "Specify which tests to run as arguments like: namespace, namespace/function, or :tag" (run-project-tests)) 理想情况下,我希望使用命令行参数--depth=n指定该值,其效果如下: (binding [*stack-trace-dep

在clojure中,如何应用';和';要一份清单吗?

在结束语中,我们如何将和或任何其他宏应用于列表 这不起作用: (apply and '(true false)) 因为apply不能获取宏的值 那么,检查列表中所有元素是否正确的最佳方法是什么呢?您可以这样做: (every? identity '(true false)) 有关更多信息,请参阅。在Clojure中,宏不是一流的东西,它们的组成与函数不同,您不能将它们传递给其他函数,也不能应用它们。这是因为它们在任何申请之前就已经完成了 通常将宏包装在函数中以应用或将其传递给函数 匿名函数读

Clojure 如何使用leiningen引用其他文件中的函数?

我对Clojure还相当陌生,所以如果这是一个完全陌生的问题,我很抱歉,但我无法在网上找到足够的答案 基本上,我的问题是,每当我尝试运行我的项目时,都会出现如下错误: Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: Could not locate greeter__init.class or greeter.clj on classpath: 在本例中,greeter

Clojure 如何分解向量以用作函数参数

在Python中,可以将列表或元组传递给函数,并让函数解压缩参数。在Clojure我怎么做?下面是一些Python代码示例: def f (a, b, c, *d): print "a: ", a print "b: ", b print "c: ", c print "d: ", d f (1, 2, 3, 4, 5, 6) print v = (4, 5, 6) f(1, 2, 3, *v) 结果: a: 1 b: 2 c: 3 d: (4, 5

Clojure:需要架构建议

我正在编写一个小clojure发布/订阅界面。这是非常简单的,实际上只有两种方法可以使用:pub和sub-listen。sub-listen接受一个字符串(子名称),do-pub接受两个字符串(子名称和值) 我在clojure还是个新手,在想出一个可行的方法时遇到了一些困难。我的第一个想法(事实上是我的第一个实现)是使用一个单独的代理来保存哈希: { subname (promise1 promise2 etc) } 当一个线程想要将它的conj的一个promise对象分到与它想要的子对象相关

Clojure 在函数中使用带列表的引号

我一定是对如何定义函数有些误解了。我在做这个SICP练习,“定义一个过程,它以三个数字作为参数,并返回两个较大数字的平方和。” 我在REPL中尝试了这一点,它似乎有效: => (reduce + (map (fn [x] (* x x)) (rest (sort '(2 1 0))))) 5 但定义一个过程并用参数替换数字会给我带来一个错误: => (defn my-procedure [a b c] (reduce + (map (fn [x] (* x x)) (rest (s

如何将var args传递给Clojure中的匿名函数?

是否可以在Clojure中为匿名函数执行var args 例如,我如何转动: (#(reduce + (map * %1 %2 %3)) [1 2 3] [4 5 6] [7 8 9]) 变成这样的 (#(reduce + (map * [& args])) [1 2 3] [4 5 6] [7 8 9]) 使用函数 我不知道如何使用#(…)语法来实现这一点,但下面是使用fn ((fn [& args] (reduce + (apply map * args))) [1 2

如何在另一个defn中调用一个defn函数以及如何在Clojure中调试

我在Clojure中运行程序时遇到问题。我几周前才开始学习Clojure。所以我不知道调试Clojure程序的快捷方法。My func2在(adj(a b))处引发异常,如下所示: ClassCastException java.lang.Long不能强制转换为clojure.lang.IFn 用户/功能2 我不知道它出了什么问题。有人能指出我编码的问题吗? 在func3中,我递归调用func2,但它抛出: ArityException传递给的参数(0)数目错误:PersistentVector

Clojure中的翻转元素

如果我输入一个向量,想要翻转元素的顺序,我会写 (reverse [1 2 3]) 现在,我该如何推广这个想法,以便能够输入嵌套向量并翻转元素的顺序?给定矩阵a,函数应反转每列中的元素。根据您在注释中给出的示例,这正是反转给定包含集合的集合所做的。您想要反转您还想要反转节点吗?也就是说:[[1 2 3][4 5 6]]将是[[6 5 4][3 2 1]]?或者您只想反转叶节点?输入嵌套向量[[1 0 0][0 2 0][0 0 3]]将转换为[[0 0 3][0 0 2][1 0]]示例

这个clojure表达式是做什么的(摘自O&"x27;Reilly的书)

我是Clojure编程新手。我已经玩了一个星期了。我阅读了《Clojure编程》一书,在反复阅读之后,我试图在REPL中剖析这个函数,但不知道这个函数是如何工作的: (defn reduce-by [key-fn f init coll] (reduce (fn [summaries x] (let [k (key-fn x)] (assoc summaries k (f (summaries k init) x)))) {} coll))

&引用;“最佳做法”;对于使用本机libs的clojure库?

虽然这可能是主观的,但有一个具体的例子,我想帮助解决。这与泛音Clojure库的一个问题有关,它似乎应该为Leiningen提供一个“最佳实践”,并适用于比泛音更多的库 泛音是一个clojure库,旨在从其他项目中使用。泛音需要本机库才能工作,因此它在project.clj中使用:本机路径“native”,以便为所使用的本机scsynth库[Overtone/scsynth“3.5.7.0”]获得正确的路径 但是,我相信这会重置依赖泛音库的项目的传入路径。有关一些背景信息,请参阅此问题,但基本上

将Clojure向量的内容提取为LazySeq

我使用Clojure的Java API,我有一个通过代码创建的持久性向量: IPersistentVector vec = PersistentVector.create(); 然后用值填充 我需要将这个向量的内容提取为LazySeq。我知道向量的方法seq()返回一个ISeq。有没有办法将这个ISeq转换成LazySeq 谢谢, ChrisISeq是seqs的一个接口,因此LazySeq也实现了ISeq。seq函数类型提示其作为ISeq返回 对向量调用seq将返回一个PersistentV

如何使用Clojure/ClojureScript创建html可嵌入小部件?

我想创建一个Web小部件。它必须访问远程clojure数据结构,并显示小部件参数请求的数据结构元素。视觉风格也可以远程控制 编辑: Youtube有以下内容: <iframe width="560" height="315" src="//www.youtube.com/embed/Z6bFyVGvg28" frameborder="0" allowfullscreen></iframe> <iframe width="425" height="350" fram

如何在clojure中优雅地停止重复函数?

我有一个程序可以播放一小段音乐。我希望它在一个循环中播放一段时间,但我希望能够优雅地停止它,也许可以用按键 (顺便说一句,我尽量避免说“循环”或“按键”,因为我不想把答案引向那个方向。) 我仍然是clojure的初学者,目前我只是从REPL开始运行 是时候让我毕业了,找到一个更好的方式来运行我的音乐功能了吗 我如何告诉我的函数在需要时优雅地停止 这实际上取决于您的实际使用情况:您是想关闭音乐(即在播放时中断音乐),还是只想阻止它下次播放 后一种情况很容易处理,只要你认为应该保持沉默,就可以承诺

应用var或';到Clojure中的函数列表

我试图在Clojure中读取函数集合的元数据,但是var或reader特殊表单不起作用,除非它们直接处理符号 ; this works (var my-fn) ; this doesn't (defn val-it [x] (var x)) (val-it my-fn) 有没有办法让它在另一个函数的作用域内工作?resolve返回当前名称空间上下文中与给定符号对应的Var或class对象ns resolve允许您指定要在其中解析符号的命名空间 (resolve 'my-fn) ;= #'so

Clojure 如何构建引用了可变数量实体的事务?

我正在学习达托米语,但还是不喜欢。如何构建引用了可变数量实体的事务 例如,这将创建具有子实体的事务,以及具有引用新子实体的子属性的族实体: (defn insert-child [id child] {:db/id #db/id id :child/first-name (:first-name child) :child/middle-name (:middle-name child) :child/last-name (:last-name child) :chi

clojure帮助我更好地对列表中的项目进行分组

所以我把它拼凑在一起,但我相信我有很多关于clojure的东西要学!我已经有了正确的答案,但对我来说这只是开始。通过找出我应该如何思考这个问题来帮助我更好地理解lisp。我是一个传统的OO开发者。。。所以lisp没有很好地进入我的脑海 (def v [:a :a :a :b :b :c :c :c]) (def a (first(partition-by identity v))) (def b (flatten(rest (partition-by identity v)))) (vec(

Clojure函数与gensym

我对Clojure库中的一些代码有一个问题 (defn compile-route "Compile a route in the form (method path & body) into a function." [method route bindings body] `(make-route ~method ~(prepare-route route) (fn [request#] (let-request [~bindings requ

Clojure新手在协议中挣扎

我试图在clojurescript中构建一个由atom支持的脚本。游标是一种类似于拉链的递归机制,用于编辑不可变的嵌套关联数据结构 我是Clojure的新手,你能帮我发现我的错误吗 (defprotocol Cursor (refine [this path]) (set [this value]) (value [this])) (defn- build-cursor* [state-atom paths] (reify Cursor (set [this value

Clojure lein run命令引发异常

在我的(toy)项目中添加了一个名称空间后,启动服务器后会引发一个异常: lein run 我正在复制project.clj文件下面的内容 (defproject compoj02 "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license {:name "Eclipse Public License" :url "http://www.eclipse

惯用的`和`&`或Clojure中的`函数(非宏)

听起来可能很奇怪,我正在Clojure中寻找和宏的函数版本 为什么??首先,我很好奇 其次,我想在支票中使用或。这不起作用: (defn victor [x] {:post (or (nil? %) (vector %))} ;; ... ) 我希望后置条件检查victor是否返回向量或nil,但失败: #<CompilerException java.lang.RuntimeException: Can't take value of a macro: #'clojur

如何在环clojure中获取客户端IP地址?

当访问者提交表单时,我想关联输入他的IP地址 (POST "/form" {params :params} (assoc params :ip-address the-ip) 如何做到这一点 考虑过这样做: (POST "/form" {params :params client-ip :remote-addr} (->> params keywordize-keys (merge {:ip-address client-ip})

Clojure 前一功能输入参数正确存储

我开始学clojure所以请原谅我的问题 我尝试实现以下功能 伪代码: function(x y) { if (x != oldX) dosomething(y); oldX = x; } oldX是全局变量 我怎样才能正确地用clojure的方式来做这件事 我写了一些这样的东西,但这是不是正确的方式 (defn rec [x y] (if (not= x oldX) (println "y")) (def oldX x)) defs应仅为顶级(def o

如何在clojure中下载文件并将其从内存中解压?

我使用CLJHTTP发出GET请求,响应是一个zip文件。此zip文件的内容始终是一个CSV文件。我想将CSV文件保存到磁盘,但我不知道如何保存 如果我在磁盘上有文件,(fs/unzip filename destination)来自Raynes/fs库,效果很好,但是我不知道如何将来自cljhttp的响应强制转换为可以读取的内容。如果可能的话,我想直接解压这个文件而不需要 我所得到的最接近的数据(如果这很接近的话)会让我到达一个BufferedInputStream,但是我从那里迷失了方向 (

Clojure读卡器用于浮点?

我想知道为什么没有用于浮动的clojure阅读器文本。比如: 1f 我找到了,但没有反应。clojure的文件也没有提到这一点。是否没有添加它的计划,如果没有,那么这背后的原理是什么?Clojure支持强制输入定义和定义的float 如果我需要写一个真正的浮点,我通常只是确保它有一个小数点1.0vs1关于@omiel的答案,您可以编写1.以获得浮点值,如果您喜欢更简洁的语法: (class 1.) ; => java.lang.Double 事实上,32位精度整数也没有读取器文本 (c

Clojure瞬态使用

我对clojure中的瞬变用法有点迷茫。任何帮助都将不胜感激。 示例代码: (defn test-transient [v] (let [b (transient [])] (for [x v] (conj! b x)) (persistent! b))) user> (test-transient [1 2 3]) [] 我尝试在返回之前使其持久化,结果是: (defn test-transient2 [v] (let [b (tran

Clojure 如何在一个命令中执行多个lein任务?

我是莱宁根的新手 当我试图执行以下命令时 $ lein clean jar 我得到 如何在一个命令中执行多个任务?您不能直接在命令行中执行,但可以在项目.clj文件中使用别名: :aliases {"go" ["do" "clean," "jar"]} 因此,在命令行中,您可以: lein go (需要在clean后面加逗号,因为lein do希望在每个命令后面加一个逗号,以便允许向命令传递参数。)是的,可以用一个命令顺序执行多个leiningen任务 例如: lein do clean,

ClojureScript中回调内部的clearInterval

基本上,我想要的是在ClojureScript中实现这段代码: var win = window.open('foo.html', 'windowName'); var timer = setInterval(function() { if(win.closed) { clearInterval(timer); alert('closed'); } }, 1000); 我试过这个: (let [popup (.open

Clojure cljc文件的基本功能

通常,Clojure源文件名为(例如)foo.clj,Clojurescript源文件名为foo.cljs。我的印象是,在Clojure versions>=1.7中,如果我希望可以使用Clojure和Clojurescript中的require或use加载文件,我可以将其命名为foo.cljc 这是正确的吗?它似乎隐含在上的主要文档页面中 而且,据我所知,它从来没有被明确说明过 这不是一个关于使用reader条件指定在Clojure和Clojurescript中运行的备用代码的问题;这是更基本

Clojure core.async:超时后终止go循环

我有一个函数,它处理来自共享通道的值流,并查找满足特定谓词的值: (defn find-my-object [my-channel] (go-loop [] (when-some [value (<! my-channel)] (if (some-predicate? value) value (recur) 问题是,上面的go循环在超时后继续执行。我希望find my object在搜索进行时从my channel中吸取值,但我不

基于谓词clojure从映射中删除密钥

假设我有一个mapm像{“good1”1,“bad1”1,“good2”2,“bad2”2},我想删除基于映射键上某个谓词的条目,一种方法是: (defn dissoc-by [f m] (->> m (filter (complement f)) (into {}))) (dissoc-by #(.contains (first %1) "bad") m) => {"good1" 1, "good2" 2} 在clojure中有没有更惯用的方法来实现这一点?这是一种非常正

Clojure—返回向量向量的所有索引的函数

如果我有一个向量[[1 2 3][4 5 6][7 8 9][[10 11][12 13][[14][15]] 如何返回向量中每个元素的位置 例如,1具有索引[0 0 0],2具有索引[0 0 1],等等 我想要像这样的东西 (some-fn [[[1 2 3] [4 5 6] [7 8 9]] [[10 11] [12 13]] [[14] [15]]] 1) => [0 0 0] 我知道如果我有一个向量[1 2 3 4],我可以做(.indexOf[1 2 3 4]1)=>0,但我如

Clojure导入嵌套类

我正在尝试为代码编写几个包装函数 它的基本形式(如示例页所示)为 我知道,要导入内部类,需要使用$,但是下面的每一种组合似乎都不起作用 (ns the.pain.is.real (:require [clojure.reflect :as r]) (:import com.arangodb.velocypack.VPackBuilder ;; fine com.arangodb.velocypack.VPackSlice ;; fine com.arangodb.vel

clojure如何编写ansible yaml文件?

我有一个简单的ansible yaml文件,它工作得很好: --- - hosts: 172.16.10.104 - tasks: - name: ping ping: '' 我使用clojure来使用clojure生成此yaml文件: (defn -main [& args] (def data [{:hosts "172.16.10.104"} {:tasks ""} {:name "ping",:ping ""} ]) (def

Clojure 选择具有默认值的关键点

是否有类似于select keys的功能,但对于缺少的键有默认值 我问这个问题的原因是我正在使用它来查询数据库。我发现了一个bug,在没有匹配项的情况下,使用选择键是不直观的 例如: (delete t (where (select-keys {:k1 "v1" :k2 "v2"} [:k1]))) 同: (delete t (where {:k1 "v1"})) (delete t (where {})) 这可以通过korma翻译为: delete from t wh

Clojure 为什么这段代码使用多种类型的引号

来源:Clojure的快乐 (defn contextual-eval [ctx expr] (eval `(let [~@(mapcat (fn [[k v]] [k `'~v]) ctx)] ~expr))) 现在如果我打电话 (contextual-eval '{a 1 b 2} '(+ a b)) 它按预期返回3 但是为什么要使用`~v而不仅仅是v 如果我删除eval。。所以函数看起来像这样 (defn contextual-eval [ctx expr]

Clojure 什么&x2019;确保序列中存在未知值的惯用方法是什么?

保证某个未知值在序列中的惯用方法是什么,该值可能在序列中,也可能不在序列中(into[]val)会失败,但可能会嵌套,即[[val..](哦,如果已经在seq中,则不会嵌套)*它只是(展平(conj?(conj[]val)将始终返回[val],永远不会[[val] 如果val本身是一个向量,那么是的,(conj[]val)将返回一个元素的向量,其中一个元素就是向量val这类事情——处理一个可能是序列也可能不是序列的值——就是不惯用的。看看他在哪里具体地调用了这一点 重构您的代码,使val始终是一

如何使用Clojure将磁盘上的文件解压缩到目录?

有没有一种简单的方法可以使用Clojure将磁盘上的文件解压缩到目录?我发现的所有东西都是关于解压一个文件的,但我有一个包含多个文件的zip。我想把它解压缩,然后把一个特定的文件读入内存。尝试构建一个ETL工具,下载zip文件,解压它,将特定文件读入内存,然后对其执行一些操作。理想情况下,我可以使用.getnextery或类似的工具,并在与正则表达式匹配时读取内存。我发现在Clojure或Java中解压缩文件内容非常困难,因为您必须自己创建目录结构。我可以想象那里有现成的库,但我曾经使用过类似以

Clojure 数组映射的映射嵌套向量

我一直试图将向量中映射的嵌套值映射到向量向量中,但没有成功 我掌握的数据如下: [{:country {:name "chile", :id 1}, :subcountries [{:name "talca", :id 2} {:name "concepcion", :id 3} {:name "puerto montt", :id 4}]} {:country {:name "united states", :id 5}

clojure迭代解构字符串数组

我正在学习clojure,我想以姓氏->名字的顺序取多个人的名字向量,并将其转换为地图向量 ["Pan" "Peter" "Mouse" "Mickey"] 应该成为 [{:firstName Peter, :lastName Pan} {:firstName Mickey, :lastName Mouse}] 我试过这个,但没用 (for [[lastName firstName] (list ["Pan" "Peter" "Mouse" "Mickey"])] {:fi

Clojure 在宏中使用循环

考虑这个最小的例子 (defmacro foo [] `(list ,@(for [i [1 2 3]] (+ 1 i)))) 我希望(foo)扩展到(列表2 3 4) 但是,当我尝试(macroexpand-1(foo) 语法错误宏扩展clojure.core/let at(*cider repl:localhost:43203(clj)*:366:22)。 测试/i-失败:简单符号?位于:[:绑定:形式:本地符号]规范::clojure.core.specs.alpha/local-n

修改ClojureScript中的高阶函数输出

我想创建一个helper函数来修改高阶函数返回的输出 高阶函数示例: (def使用meta-sub(make-app-fn(make-sub:meta))) 问题是,在let中使用此选项时,如下所示: (让[meta-sub(使用meta-sub道具:给我这个meta)]) 返回键值对的映射,如下所示: {:key-we-small-never-need-1 nil :key-we-small-never-need-2零 :key-we-small-never-need-3零 :key-we

无头跑步时跟踪Clojure Leiningen REPL的方法?

我正在使用以下命令为Clojure运行无头Leiningen REPL: lein repl :headless :port 34567 是否有办法跟踪与REPL的交互?不确定您的意思是在从不同终端连接的另一个REPL中查看(重定向)标准错误/输出的内容?这可能对你有用:manscript也许?

Clojure 如何有条件地生成Hiccup结构?

我有一堆描述位置的地图: (def pizzeria { :LocationId "pizzeria" :Desc "Pizzeria where Timur works" :Address "Vorgartenstraße 126, 1020 Wien" :Comment "" }) (def dancing-school { :Locatio

上一页 1 2  3   4   5   6    7   8   9  ... 下一页 最后一页 共 251 页