clojure相关内容
如果我这样做,例如: (defmacro qqq [] '(toString [this] "Qqq"))(物化对象(qqq)) 失败是因为 reify 看到的是 (qqq) 而不是 (toString [this] "Qqq"). 通常的解决方案是一个用我自己的东西包装“reify"调用的宏,但它更长,更具侵入性. 如何使我的宏比通常的宏更强大? 期待类似: (defma
..
所以从 Clojure 宏开始创建同义词一个函数,我发现 def 不能用来定义宏的同义词.以下是我尝试过的 Clojure 不允许的示例. ;(def def-function defn);(def case cond);(定义函数 fn) 是否可以在 Clojure 中为宏定义同义词/别名?是否需要使用 defmacro? 解决方案 可以使用宏: 用户=>(defmacro def
..
我想编写一个 Clojure with-test-tags 宏来包装一堆表单,并在每个 deftest 表单的名称中添加一些元数据 -具体来说,在 :tags 键中添加一些东西,这样我就可以使用一个工具来运行带有特定标签的测试. with-test-tags 的一个明显实现是递归遍历整个主体,根据我找到的每个 deftest 表单进行修改.但是我最近一直在阅读 Let Over Lambda
..
我已经在 node.js 上实现了自己的 Lisp,我可以像这样运行 s-expression: (断言 (= 3 (+ 1 2)))(def even? (fn [n] (= 0 (bit-and n 1))))(断言(甚至?4))(assert (= false (even?5))) 现在我想添加宏 - defmacro 函数 - 但这是我卡住的地方.我想知道如何在其他 Lisps 中
..
我在 Clojure 中遇到了一个与 defmacro 相关的奇怪问题,我有类似的代码 (defmacro ttt([] (ttt 1))([a] (ttt a 2))([a b] (ttt a b 3))([a b c] `(println ~a ~b ~c))) 我用 (ttt) 运行,它假设变成 (println 1 2 3),并打印“1 2 3",但我得到的是 ArityExcept
..
我了解 Clojure 中的 `-> 主题宏将所有提供的函数应用于给定参数.但是,它似乎不适用于匿名函数.例如: 用户>(-> 4 增加 增加 减少)5 但是: 用户>(-> 4 #(+ % 1) #(- % 1) #(+ % 1)) 返回错误: clojure.lang.Symbol 不能转换为 clojure.lang.IPersistentVector[抛出的类 java.lang
..
我正在尝试解析一个相当小的 ( (需要'[clojure.data.xml :as xml]'[clojure.java.io :as io])(xml/parse (io/reader "data/small-sample.xml")) 我收到一个错误: OutOfMemoryError Java 堆空间clojure.lang.Numbers.byte_array (Numbers.ja
..
尝试编写一个递归函数,将连续对添加到向量中. [1 2 3 4] =>[3 5 7] 几乎卡住了,这就是我目前所拥有的: (def tmp [ 1 2 3 4])用户>(map #(+ (second %) (first %)) (partition-all 2 tmp )) 这是错误的,因为它只添加了对而不是连续的对.我得到 [3 7] 而不是 [3 5 7] 解决方案 这是另一
..
我有一个 array-map 我正在 asoc 将一些值放入其中.在一定大小之后,返回的值是 PersistentHashMap 而不是原来的 PersistentArrayMap.我在一些网站上读到过这种行为.即使在 assoc 之后,有什么方法可以强制插入顺序? 我确实有一个单独的函数,它将接受一个 ash-map 和一个键向量,并按此顺序返回一个带有键的“新鲜" array-map,但
..
..
我有一个 Rasperry Pi 512 MB 版本(2012 年末)并安装了 Java SE 8 for ARM 的开发者预览版就可以了.当我使用 Leiningen 创建一个新的 Clojure 项目并通过执行 lein repl 启动 nREPL 时,需要两分钟多一点(大约 130 - 140 秒),直到 REPL 初始化并可以使用. 直接启动JAR文件java -jar clojur
..
而不是压缩映射两个列表来获取: (zipmap ["a","b","c"] ["c","d","e"]) = {"c" "e", "b" "d", "a" "c"} 我想将第一个列表的第一个元素与第二个列表的第一个元素连接起来,依此类推: ("ce","bd","ac") 或以相反的顺序. 解决方案 您可以使用 map 做到这一点.map 可以接受多个集合,它从每个集合中取出下一个
..
我正在为我的 compojure web 应用程序寻找一个好的生产 web 服务器/servlet 容器.将 Jetty 或 Tomcat 或其他服务器用于使用 compojure 的 Clojure Web 应用程序的优缺点是什么?是否有关于将 Web 服务器与 Clojure 一起用于生产或工具的好的文档? 我更喜欢灵活、易于配置并且有关于如何配置和使用它的良好文档的网络服务器.
..
我有一个带有这个 project.clj 的简单网络应用程序: (defproject squirrel-money "1.0.0-SNAPSHOT":description "松鼠钱":dependencies [[org.clojure/clojure "1.2.0"][org.clojure/clojure-contrib“1.2.0"][合成“0.5.3"][环/环码头适配器“0.3.5
..
我想导入整个 weka.classifiers.functions 包但不想导入 RBFNetwork 类. (ns com.wekatest(:import (weka.classifiers 分类器评估)(weka.classifiers.functions)(weka.core 属性 FastVector Instance Instances))) 编辑:(weka.classifie
..
假设我有一个包含如下映射的原子: {:count 0 :map hash-map} 如何使用交换将另一个键值对合并到 :map 上? 解决方案 你会使用 assoc-in: (交换!my-atom assoc-in [:map :new-key] 值)
..
我想将 [1,2,3,4] 转换为 [[1 2] [2 3] [3 4]] 或 [(1 2) (2 3) (3 4)].在 clojure 我有 (partition 2 1 [1,2,3,4]).我怎样才能在haskell中做到这一点?我怀疑标准api中有这样的功能,但我找不到. 解决方案 为此的标准技巧是使用它自己的 tail zip 列表: >让 xs = [1,2,3,4] in
..
我试图在创建 uberjar 时了解“Lieningen"行为.以下是重现行为的最小示例: (ns my-stuff.core(:gen-class))(def some-var (throw (Exception. "boom!")))(defn -main [& args](print some-var)) 当使用 lein run 执行时,它显然会失败并抛出异常.但是,我不明白为什么执行
..
我有一个小的 Clojure 程序,它使用 Clojure JDBC 工具来创建一个HSQL 数据库中的表.但是,如果我从 Leiningen 的 REPL 运行它,它似乎只会实际创建表.如果我使用 lein run 或从我的 IDE (IntelliJ) 运行代码,它不会创建表.没有异常报告.在这两种情况下,输出都只是“(0)". 这是代码片段: (nstramway.core(:req
..
我目前正在阅读 O'reilly Clojure 编程书,其中关于惰性序列的部分内容如下: 惰性序列有可能(尽管非常罕见)知道其长度,因此在不知道其内容的情况下将其作为计数的结果返回. 我的问题是,这是如何做到的,为什么如此罕见? 遗憾的是,本书在这一部分中没有具体说明这些内容.我个人认为在实现之前知道惰性序列的长度非常有用,例如,在同一页面中是使用 map 使用函数处理的惰性文
..