Clojure 创建新leiningen项目时FileNotFoundException

我刚刚安装了leiningen,正在按照教程开始学习。我打字 lein更新了我的东西,然后按照说明更正了project.clj文件。然后我输入lein repl,它会很好地调出repl。 下一步是打字 (require 'my-stuff.core) 这就是我得到的 FileNotFoundException Could not locate my_stuff/core__init.class or my_stuff/core.clj on classpath: clojure.lang.RT

“Clojure”:进口;使用

两者的区别是什么 (:import (java.io ByteArrayInputStream) (java.net URL))) 及 (URL.“”//找不到URL类名错误 尽管我知道第二个声明不起作用,但我对两个导入声明之间的用法感到困惑。如果您有完整的符号(第二个案例),则不需要在其周围加上括号 (:import java.io.ByteArrayInputStream java.net.URL) t看一看如果你有完整的符号(第二种情况),你不需要在它周围加上括号 (:import j

Clojure编译错误-无法在此上下文中解析符号:此

就在我认为我已经在Clojure的错误中看到了这一切的时候,我得到了一个令人困惑的错误。使用lein compile编译.clj文件时,我遇到了以下异常: java.lang.RuntimeException: Unable to resolve symbol: this in this context, compiling:(medical_notes/read_notes.clj:135:26) read_notes.clj文件中它指向(135)的行是 {:type :compute}

Can';t从字符串中评估/加载字符串clojure函数

我需要从edn文件中读取clojure函数,该文件输出hiccup以生成html内容。 但我被困在需要评估函数的部分。 我收到错误消息: java.lang.RuntimeException: Unable to resolve symbol: fn in this context, compiling:(null:1:1) 及 正在clojure REPL中工作并输出预期结果 ([:div "Hello"]) project.clj (defproject infocenter "0.1

Clojure按值排序哈希映射,使用键名作为分块符

我希望能够根据哈希映射的键的值对其进行排序,在出现平局时使用键名本身 我有一个来自Clojure wiki的排序函数 目前我能做到 (-> "notarealroom" frequencies order-map) 哪个输出 {\o 3, \r 2, \a 2, \t 1, \n 1, \m 1, \l 1, \e 1} 但我希望能够对具有相同值的键进行排序,例如按字母顺序排列的\r和\a,给出如下内容 {\o 3, \a 2, \r 2, \e 1, \l 1, \m 1, \n 1

是“Clojure”吗;Java Complete;?

请原谅“Java完成”这个词,因为我不知道这个词的正确名称 我了解到Jython不支持100%的Java程序。具体来说,一个反例是Jython不支持Java注释:。您不能使用带有注释的Java程序并使用Jython在(J)Python中重新创建相同的程序 Clojure“Java完整”吗?如中所述,任何用Java编写的程序都可以用Clojure编写?或者,在Java中,您可以做一些在Clojure中做不到的事情吗?可以吗?是的,至少在Java6中是完全对等的(从那时起我就没有跟上)。会很有趣吗?

Clojure Lisp-1和Lisp-2之间的区别是什么?

我试图理解Lisp-1和Lisp-2之间的区别,以及这与Clojure的关系,但我仍然无法正确理解。有谁能启发我吗?根据: 在Lisp社区中,单独的函数名称空间是否是一个优势是一个争论的来源。这通常被称为Lisp-1与Lisp-2之争。Lisp-1指的是Scheme的模型,Lisp-2指的是Common Lisp的模型 这基本上是关于变量和函数是否可以有相同的名称而不发生冲突。这意味着它不允许函数和变量同时使用相同的名称。根据: 在Lisp社区中,单独的函数名称空间是否是一个优势是一个争论的来源

什么是Clojure内在论

浏览Clojure源代码时,我发现了一个文件。它看起来像是一些clojure运行时函数到JVM操作码的映射 然而,我不知道他们在哪里申请。下面的代码 (def ^:const pi 3.141592) (defn circumference [^double r] (* r 2.0 pi)) 编译成 public static java.lang.Object invokeStatic(double r); 0 dload_0 [r] 1 ldc2_w <Double 2.0&g

Clojure-引用列表可添加;引述;要列出的文本-如何删除此文本?

我有一个场景,其中我有一个映射,它有一个字段,这个字段将是一系列嵌套列表,以创建一个树状结构。我在列表中引用了“以便它工作,否则在它尝试执行时会出错” (def test-map {:tree '("1" "2" "3" '("1" "2"))}) 问题是,这似乎在实际列表中添加了“quote”一词 (:tree test-map) ;("1" "2"

Clojure hiccup消失键命名空间

我正在将地图的键值打印到html,而键名空间正在消失,这是我不想要的 下面的layout调用hiccup的html5进行渲染: (布局(str“Path”(:Path/title Path)) [:h1“Title:(:Title path)slug] [:p(str路径)];打印“{:db/id 17592186045542,:path/title“sdf”}” (println(键路径));在终端“(:db/id:path/title)”中打印 [:p(键路径)];打印“idtitle” (

Clojure 引证混乱

为什么这一系列clojure命令返回false而不是true?语句1“C”和语句2(引号C)的结果有什么区别 这个问题有点类似于Clojure(和其他Lisp)中的,是表单(引号…)的快捷方式。所以当Clojure看到这一点时: ('A 'B 'C) 读者将其“翻译”为: ((quote A) (quote B) (quote C)) 每个引号形式的计算结果都是一个符号,因此(引号a)计算结果是名为a的符号。在Clojure中,符号是函数,可以应用,因此((引号a)(引号B)(引号C))实际

在Clojure中搜索记录的最简单方法

我在Clojure有一张这样的地图: (def stuff #{ {:a "help" :b "goodbye"} {:c "help2" :b "goodbye"} {:a "steve" :b "goodbye"} {:c "hello2" :b "sue"} }) :我想提供一个搜索,以便: (search stuff "help") :将返回: #{ {:a "help" :b "goodbye"}

Clojure 使用compojure解析多个复选框中的值

我创建了一个小型的compojure web应用程序,它可以使用提供的URL显示从其他网站获取的多个值。目前,这个URL是在我的一个函数中硬编码的,现在我想根据文本字段和复选框中的值添加动态URL创建功能 以下是我的页面的外观: (defn view-layout [& content] (html [:body content])) (defn view-input [] (view-layout [:h2 "Find"] [:form {:metho

Clojure中控制流的时间-ScheduledThreadPoolExecutor的陷阱?

我正在学习Clojure中的并发性 我(斯图尔特·塞拉?)在上遇到一项索赔,声称: Clojure函数不能在没有阻塞或Java互操作的情况下为控制流使用时间 Java interop(ScheduledThreadPoolExecutor)不知道线程本地绑定 我不理解这些说法,恳请澄清,也许是一个例子。具体而言: ScheduledThreadPoolExecutor的现状有什么问题?因为我正在启动一个新的(绿色)线程,所以我不希望每个线程绑定都会继续 我可以安排一个普通的Clojure函

如何在clojure中获取当前日期为YYYYMMDD?

我正在使用以下代码: (require '[clj-time.core :as time] '[clj-time.coerce :as tc] '[clj-time.format :as f]) (f/unparse (f/formatter "yyyyMMdd") time/now) 但它抛出了以下错误 caused by: java.lang.ClassCastException: clj_time.core$now cannot be cast to

Clojure 在lein repl上使用跷跷板获取错误

在运行lein repl时,试图查找seesaw gui库时出现以下错误。 你知道问题是什么以及如何解决吗 Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar WARNING!!! version ranges found for: [seesaw "1.4.2" :exclusions [org.clojure/tools.trace]] -> [j18n "1.0.1"] -> [org.

Clojure 将嵌套映射分解为键值对

我想将Clojure中的嵌套映射分解为一系列键值对。例如,让我们看一下这张地图: {:a :b :c {:d {:e :f :g :h} :i :j}} 此贴图应如下所示: [[:a :b] [:c {:d {:e :f :g :h} :i :j}] [:d {:e :f :g :h}] [:e :f] [:g :h] [:i :j]] 输出的顺序并不重要 我正在考虑使用递归函数,tree-seq或cloju

使用clojure返回一个元素和两个原始序列不相同的序列

我有两个序列,可以是向量或列表。现在我想返回一个序列,其元素与这两个序列不相同 以下是一个例子: (removedupl [1 2 3 4] [2 4 5 6]) = [1 3 5 6] (removeddpl [] [1 2 3 4]) = [1 2 3 4] 我现在很困惑。这是我的代码: (defn remove-dupl [seq1 seq2] (loop [a seq1 b seq2] (if (not= (first a) (first b))

Clojure 如何从变量中获取函数的元数据

我有一个函数,可以处理函数的元数据。我知道我可以用以下语法获取函数的元数据: (meta #'println) 它返回我感兴趣的元数据: {:arglists ([& more]), :doc "Same as print followed by (newline)", :added "1.0", :static true, :line 3631, :column 1, :file "clojure/core.clj", :name println, :ns #namespace[cl

Clojure 如何为lein使用的jvm设置类路径

我想从我创建的模板创建一个新的lein项目,而不在.m2或clojars中安装模板。所以我想设置lein工作时使用的类路径。这是如何做到的?有没有理由不在.m2中安装模板?否则可能使用CLASSPATH=。。。lein new projectname?这只是一个智力练习,看看如何在不打开lein launcher(/usr/bin/lein或其他任何东西)的情况下完成它,有一个代码来表示类路径环境变量(它是它的前缀);没有尝试过它,但没有考虑到任何不在.m2中安装模板的原因?否则可能使用CLAS

Clojure:用什么网站来搜索;不执行X的函数";

假设我想找到sin/cos函数。在haskell中,我会启动,搜索“sin”或“cos”,阅读类型签名,然后完成 在Clojure中,到目前为止,我能做的最好的事情(对于Clojure.core中没有的函数)是启动google,输入“Clojure-sin”或“Clojure-cos”——然后得到一个关于Quil/sin和Quil/cos的包——然后开始思考 2a。这个被子包是什么? 2b。我想把这个包裹收进来只是为了得到好处吗? 2c。是否有“更标准”的软件包也提供sin/cos == 因此,

Clojure 关于和宏的来源

我正在浏览clojure.core的源代码: (defmacro and ([] true) ([x] x) ([x & next] `(let [and# ~x] (if and# (and ~@next) and#)))) 为什么不 (defmacro and ([] true) ([x] x) ([x & next] `(if ~x (and ~@next) ~x))) 因为参数x是一种形式,可以是任何表达式,可以在中计算

如何使clojure程序结构更易于识别?

Clojure是一种Lisp方言,继承了Lisp的同音象似性。同源性使元编程更容易,因为代码可以被视为数据:语言中的反射(在运行时检查程序的实体)依赖于单一的同质结构,并且它不必处理复杂语法中出现的几种不同结构 更同质的语言结构的缺点是,语言构造(如循环、嵌套ifs、函数调用或开关等)彼此更相似 在clojure中: ;; if: (if (chunked-seq? s) (chunk-cons (chunk-first s) (concat (chunk-rest s)

Clojure服务之间的通信

我需要放置一个Clojure服务来通过HTTP调用与另一个服务通信,在java中,我们可以使用RestTemplate这样做: ResponseEntity<Product[]> responseEntity = new RestTemplate().getForEntity( "http://localhost:8001/products/store/all", Product[].class); Response

为什么clojure将名称中的破折号转换为文件系统中的下划线?

我已经使用clojure几个月了,有一件事我真的不明白,为什么名称空间名称中的破折号必须在文件系统中表示为下划线。有人能给我解释一下吗?是否可以在文件名中也使用破折号?您的意思是磁盘上的.class文件在Clojure中的函数有破折号的地方有下划线?我确信我读到过,这与JVM在这些文件名中不支持破折号有关。(或者至少不能保证它支持他们。) 这只是类文件名的一个限制,Clojure仍然默默地处理这个问题。您自己的代码仍然可以处理文件名中带有破折号的文件 很抱歉,我现在没有这方面的参考资料。这是Ja

Clojure的Sphinx域 我习惯于使用C++和Python项目。我刚在开始一个项目,我想重新使用我的Sphinx/reStructuredText技能来记录我的Clojure代码。因为Clojure没有内置的,所以我开始写一个

讽刺的是,Sphinx的文档对编写扩展毫无帮助。因此,从Python和Javascript的内置模式开始,我已经有了一些基本元素。我可以使用以下指令为函数编写文档: .. clj:ns:: clojure.core .. clj:fn:: (filter f coll) :param f: predicate :param coll: collection Built-in! 但是,HTML输出会生成C/Python样式的签名。前面的示例生成如下内容: filter(f

关闭clojure/webnoir中的已送达文件

我在webnoir中有以下函数,用于从磁盘提供映像 (defpage [:get "/GetPhoto"] {:keys [photoName]} (def file (io/input-stream (str photoName ".jpg"))) (resp/set-headers {"Content-Type" "image/jpeg"} file)) 我假设应该关闭该文件,但当我在函数末尾添加(.close file)时,访问URL时会出现错误ja

如何确定Clojure中函数的参数数?

在clojure中给定一个函数x,如何通过编程获得参数数量的计数 例如: 如果您有权访问保存函数的var,则可以通过以下方式访问其元数据来获取参数计数: (defn arities [v] (->> v meta :arglists (map count))) (defn a []) (defn b [_ _]) (map arities [#'a #'b]) ;= ((0) (2)) arities将返回一个包含函数所有arities的seq。这样做的缺点是,对于可变参数

Clojure中str与print-str的区别与联系

我正在阅读,在那个教程中,它说函数print str将内容打印到返回的字符串中。那么这是否意味着: (打印str a b c…) 我尝试使用我的REPL,它的行为与我上面假设的一样,但我只想知道它是否真的是,或者我在这里遗漏了什么…函数print str将返回一个字符串,类似于REPL在被要求评估参数时报告的字符串,例如用于人类消费。函数str调用对象的.toString。对于字符串参数,结果与您指出的相同 对于其他对象,这通常是不正确的 ((juxt print-str str) 1N)

如何在clojure REPL中停止孤立线程

我正在做一些与clojure的线程相关的事情 现在我在REPL中工作,在REPL中编写和更新代码 我的问题是,有时会有一些未来的运行。我因为一些错误失去了裁判。我阻止它们的唯一方法是重新启动repl 我想知道,如果我没有参考,是否有任何方法可以停止运行未来(线程)?Clojure公共API提供了停止运行未来的唯一方法,如下所示: (shutdown-agents) 但这不会影响你未来的工作。相反,你可以打断他们 (import 'clojure.lang.Agent) (.shutdownNo

Clojure 如何确定集合是否是暂时的?

我想测试一个集合是否是暂时的。我尝试了以下功能: (defn transient? [coll] (extends? clojure.lang.ITransientCollection (type coll))) 但它不起作用: user=> (transient? {}) NullPointerException clojure.core/implements? (core_deftype.clj:512) user=> (transient? (transient {

Clojure compojure包装json正文不工作

我正在使用下面的代码尝试访问PUT请求中的一些json输入,但是返回的是:body{},我不确定我做错了什么 (ns compliant-rest.handler (:use compojure.core ring.middleware.json) (:require [compojure.handler :as handler] [compojure.route :as route] [ring.util.response :refer

使用Clojure Java shell(特别是cd)输入shell命令的标准是什么?

我一直在尝试使用clojurejavashell进入cd/home/ics/icsdev。我一直在犯错误,但不知道为什么。我已经阅读了源代码并寻找示例 ics-db.core=> (sh "cmd" "cd /home/ics/icsdev") IOException error=2, No such file or directory java.lang.UNIXProcess.forkAndExec (UNIXProcess.java:-2) 我还玩了:in,得到

Clojure中的词法/动态范围-重新定义变量时的范围

我花了一整天的时间研究Clojure(和Lisp)中的词汇和动态范围界定。当我以为自己终于明白了时,我举了这个例子,并对它没有返回我所期望的结果感到非常惊讶: (def non-dynamic-var "this is a non dynamic var") (def ^:dynamic dynamic-var "this is a dynamic var") (defn function-using-dynamic-var [] (println dynamic-var)) (defn

Clojure reduce无法对IFn长时间施放

这个周末我决定学习clojure。我被reduce卡住了。我得到了一个类强制转换异常 (reduce #((cond (= %1 0) %2 :else %1)) 0 '(1 1 1)) ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn user/eval2092/fn--2093 (form-init1869535703328200664.clj:1) 我不确定我到底做错了什么。非常感谢您的帮助:)函

Clojure-在项目中需要库的多个版本

所有内容都在标题中,但下面是一个示例用例: 函数的第一个参数如下所示: (my-fn "a.b.c" ...) 在较新的版本中,它现在变成: (my-fn ... ["a", "b", "c"]) 是否可以:需要库的特定版本? 例如: :require my.util.lib :as newlib ;; new version :require my.util.lib@v0.0.1 :as lib ;; old library 然后,它将允许每个文件迁移这个库使用情况文件。如评论中

Clojure core.logic conjo目标中的意外行为

我很难理解core.logic中conjo目标的以下行为 首先,一切似乎都很好 (l/run* [q] (l/conjo q 2 3 [1 2 3] )) => ([1]) 当q=[1]时,目标成功了,因为(conj[1]23)==[1 2 3] 另一方面,当我要求2lvar时,我得到了以下我不理解的结果。我期待着a=[1]和b=2 (l/run* [a b] (l/conjo a b 3 [1 2 3] )) => (([_0 _1] :- (clojure.core.l

Clojure 为什么重新查找返回一个包含两个元素的向量?

以这种方式使用“重新查找”时: (re-find #"(\d{3})" "abc1245") 我得到: ["124" "124"] 当我只期望一个值时。发生了什么事?这是因为括号创建了一个正则表达式“组”。看 例如。区别在于: (re-find #"(\d{3})" "abc1245") => ["124" "124"] ; #1 (re-find #"\d{3}" "abc1245") => "124" ; #2 (re-s

是什么原因引起的;错误:没有为“未定义”类型定义协议方法XXX.YYY;用ClojureScript而不是Clojure?

我一直遇到如下错误: #object[Error Error: No protocol method XXX.YYY defined for type undefined: ] 其中,XXX.YYY部分是可变的。此代码位于*.cljc文件中,在JVM Clojure中运行良好,但在ClojureScript中失败。原因可能是什么?这个模糊的错误消息可能是由于对JVM类的不小心引用导致的,这些类没有使用#?(:clj…和#?(:cljs…读卡器条件进行适当保护。对于上面的示例,问题代码如下: (

遍历映射并获取堆栈溢出错误clojure

对于作业,我需要从clojure中的文本文件创建一个映射,这是我的新手。我特别使用了一个散列映射…但有可能我应该使用另一种类型的映射。我希望这里有人能帮我回答这个问题。我确实尝试过将哈希映射更改为排序映射,但它给了我同样的问题 文件中每行的第一个字符是键,整行是值。钥匙是0-9999之间的数字。共有10000行,行中第一个数字后面的每个数字都是0到9999之间的随机数。 我想我已经成功地创建了hashmap。至少,当我运行代码时,它不会给我一个错误。但是,当我尝试遍历它时,打印键0-9999的每

如何在clojure中打印函数的结果?

在函数调用中使用pprint时,不会得到函数的结果: (defn my-func [] (+ 1 2)) (pprint my-func) 相反,我没有得到任何输出。如何使pprint打印3?my func计算为varmy func引用的fn,您应该看到表单的输出 #object[user$my_func 0x50029372 "user$my_func@50029372"] 要调用my func,您需要使用 (my-func) 因此,您可以使用 (pprint (my-func)) m

如何将相同的参数应用于clojure中的函数调用列表?

假设我想将参数p1和p2应用于函数调用列表: (defn some-func [] (let [p1 a p2 b] (f1 p1 p2) (f2 p1 p2) (f3 p1 p2) ... )) 做这件事的好方法和简洁方法是什么?您可能需要回顾一下。我可以做你想做的事 不过要注意,juxt有点晦涩难懂,可能会使您的代码难以阅读。您可能需要查看。我可以做你想做的事 不过要小心,juxt有点晦涩难懂,会让你很难读懂你的代码。假设你只想要副作用,我会使用doseq来

Clojure 将列表和元素转换为向量的优雅方式

是否有更简洁和/或优雅的方式来表达let中的最后一行 (let [a ... ; int b ... ; int xs ... ; list y ... ; int z ... ; int ] (into [a b] cat [xs [y z]])) 结果应该是一个向量。上面的表达式对于它完成的简单任务来说看起来相当复杂。在Python中,这将是 [a,b]+xs+[y,z]这可以更好地捕捉两个追加操作的相似性。一个更长的变体可以

在括号中迷路(Clojure)

请说明如何将以下函数重新构造为可读性更强、括号更少的函数 (defn forwardDifference2nd [fn x h] (-> (/ (+ (- (fn (+ (+ x h) h)) (* (fn (+ x h)) 2.0)) (fn x)) (Math/pow h 2)))) 源代码 以下是一个例子: (defn forwardDifference2nd [f x h] (let [fh #(

Clojure,re-graph成功地从graphql获取了数据,但回调没有';t激活

因此,我使用0.1.11版本的re-graph,并尝试从端点获取数据。获取数据后,我检查了浏览器中的“网络”选项卡,找到了预期的数据,之后它应该会激活我的回调函数,但它似乎不起作用(但有时它起作用,在刷新页面几次后,它就不再起作用)。这是代码 ;; how I init re-graph (rf/dispatch [::re-graph/init ::conf/graphql-client-name {:ws-url url

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