clojure相关内容

Clojure 的映射:键和值的顺序是否相同?

可以依靠吗(= m (zipmap (keys m) (vals m)))在 Clojure 1.3+ 中? 在某些情况下,这种行为会使代码更具可读性,例如 (defn 替换键 [smap m](zipmap (替换 smap (keys m)) (vals m))) 对比 (defn 替换键 [smap m](进入{} (for [[k v] m] [(smap k k) v])) ..
发布时间:2022-01-02 23:11:20 其他开发

函数 seq?、sequential 之间有什么区别?和科尔?

函数seq有什么区别?顺序?和科尔? 我发现一些信息分散在整个互联网上,但我认为最好将这些信息集中在这里. 解决方案 seq? 是一个谓词,如果它的参数实现了 ISeq 接口,则返回 true,也就是说它提供了方法first、rest、cons.请参阅http://clojure.org/sequences. (seq? [1 2])错误的(seq?(seq [1 2]))真的 ..
发布时间:2022-01-02 23:11:14 其他开发

使用 Clojure 线程化长时间运行的进程并比较它们的回报

我对需要处理的两个非常大的数据集有两个不同的函数,最终归结为两个布尔值.然后需要将这些值并在一起以获得最终结果.我的问题是创建线程以便两个长函数可以同时运行的最佳方法是什么.我的想法是这样的, (def f (future longProcessOne(data_one)))(def g (future longProcessTwo(data_two)))(和@f @g) 但我一直在寻找更好的 ..
发布时间:2022-01-02 23:10:48 其他开发

什么是 Clojure 规范?

我无法理解clojure的意图.规范 它解决了什么样的问题? 我们为什么要使用它? 解决方案 spec 允许您为数据和函数创建规范.规范的核心是谓词(基于现有的 Clojure 谓词)和结构,而不是您在静态类型语言中可能看到的基于类型.通过基于谓词的规范,您可以编写比大多数类型系统更具表现力的规范,并且使用与您的代码相同的语言. 在函数上定义的规格指定参数的规格、返回值以 ..

在 Leiningen/Clojure 中使用 lwjgl

解决方案 (1) (println (.System getProperty "java.library.path")) 这给了我一个 java 寻找本机扩展的地方的列表. 然后,我将 lwjgl 原生扩展放在那里. 对我不起作用的东西(可能是因为我用错了) (*) 设置 :native-path(*) 设置 :native-dependencies 问题 我的设置: ..
发布时间:2022-01-02 23:10:31 其他开发

通过加入键来展平地图

给定一个只有关键字键的嵌套映射,例如 {:foo {:bar 1 :baz [2 3] :qux {:quux 4}} :corge 5},我该如何实现flatten-map 所以 (flatten-map {:foo {:bar 1 :baz [2 3] :qux {:quux 4}} :corge 5} "-") 产生类似 {:foo-bar 1 :foo-baz [2 3] :foo-qux ..
发布时间:2022-01-02 23:10:20 其他开发

为什么 Clojure 习语更喜欢返回 nil 而不是像 Scheme 那样的空列表?

来自对另一个问题的评论,有人说 Clojure 习惯用法更喜欢返回 nil 而不是像 Scheme 中的空列表.这是为什么? 喜欢 (when (seq lat) ...) 代替 (if (empty? lat)'() ...) 解决方案 我能想到几个原因: 逻辑区别.在 Clojure 中,nil 意味着没有/没有价值.而 '() "空列表是一个值 - 它恰好是一个空列表 ..
发布时间:2022-01-02 23:10:12 其他开发

如何将 Clojure/Java 日期转换为更简单的形式

我想拿 (str (Date.))“美国东部时间 2013 年 2 月 7 日星期四 12:15:03" 并将其转换为字符串,以便将其输入到 Informix 日期字段 mm/dd/yyyy 中. 02/07/2013 我一直在查看各种帖子,但都没有成功.这是我发现并尝试的第一件事,知道我必须颠倒日期格式的顺序.我只是想让它工作. (defn str-to-date [date] (. ..
发布时间:2022-01-02 23:10:02 其他开发

启动repl时如何默认加载ns

我正在使用 lein2.我想在 repl 启动时默认加载一些 ns.当为该项目执行 lein2 repl 时,是否可以在 project.clj 中指定应该加载的 ns? 解决方案 你会在 示例项目 ;;改变 REPL 行为方式的选项:repl-options {;;指定提示输入时要打印的字符串.;;默认为 (fn [ns] (str *ns* "=> ")):prompt (fn [n ..
发布时间:2022-01-02 23:09:55 其他开发

在clojure中生成从'a'到'z'的字符序列

我想生成从“a"到“z"的字符序列.在scala中,我可以非常简单地生成字符序列: ('a' 到 'z') 但是在 clojure 中,我最终得到了以下代码: (->>(range (int \a) (inc (int \z))) (map char)) 或 (map char (range (int \a) (inc (int \z)))) 在我看来,这很冗长.有什么更好的方法吗? ..
发布时间:2022-01-02 23:09:48 其他开发

创建没有 Java 的 Android 应用程序

我想开始创建 Android 应用程序,但我不喜欢 Java.我读到可以使用 Scala 来做到这一点.还有其他选择吗?(Clojure?) 我是一名 Python/Django 开发人员,所以学习一种完全不同的语言会很棒. 解决方案 在这一点上 Scala 是最成熟的..我想自己尝试 groovy 但它甚至没有超出 alpha.. Android 上的 Plus Scala ..
发布时间:2022-01-02 23:09:24 移动开发

将 Clojure 宏视为函数

如何使 Clojure 宏充当函数,以便我可以将其作为参数传递?我希望必须以某种方式包装它. 我不希望包装版本的行为与原始宏完全相同(按名称调用与按值调用的差异),但在这并不重要的少数情况下它会很有用. 解决方案 如果我没理解错的话,你可以把它包装在一个函数中. 将平方函数的这个(愚蠢的)实现视为宏: (defmacro square [x](列表* x x)) 如您所知, ..
发布时间:2022-01-02 23:09:18 其他开发

Clojure:序列回向量

如何在序列生成操作(如排序)之后将序列转换回向量?在作为向量的序列上使用 (vec..) 是否代价高昂? 一个(坏的?)可能性是创建一个乱序的新向量: (vec (sort [1 2 3 4 5 6])) 我之所以这么问是因为我需要随机访问(第 n 个 ..)到巨大的排序向量 - 现在排序后的序列很大,具有可怕的 O(n) 随机访问时间 解决方案 根据我自己的测试(没有科学性), ..
发布时间:2022-01-02 23:09:09 其他开发

两张地图的区别

我需要非常有效地比较 Clojure/Java 中的两个映射,并返回由 Java 的 .equals(..) 确定的差异,nil/null 相当于“不存在". 即我正在寻找编写函数的最有效方法,例如: (map-difference{:a 1, :b nil, :c 2, :d 3}{:a 1, :b "隐藏", :c 3, :e 5})=>{:b nil, :c 2, :d 3, :e ..
发布时间:2022-01-02 23:08:55 Java开发

clojure.spec:`alt` 与 `or` 序列规范

我正在关注 clojure.spec 的指南 (http://clojure.org/guides/spec).我对序列规范的 alt 和 or 之间的区别感到困惑. 对我而言,以下两个示例同样有效.那么两者有什么区别呢? ;使用`alt`(s/de​​f ::config (s/* (s/cat :prop 字符串?:val (s/alt :s 字符串?:b 布尔值?))))(s/exp ..
发布时间:2022-01-02 23:08:47 其他开发

在 Clojure 中获取调用堆栈

当我运行 Clojure 程序并在执行过程中出错时,我注意到 REPL 打印的消息仅包含我执行的脚本中的顶级行号.我可以让它转储调用堆栈(引用 Clojure 代码的各种行号)吗? 例如: user=>(加载文件“test.clj")java.lang.IllegalArgumentException: 错误数量的 args (1) 传递给:user$eval134$fn (test.cl ..
发布时间:2022-01-02 23:08:38 其他开发

将向量扩展为函数的参数

有没有办法将值向量扩展为函数的参数?例如像这样: (defn addnums [a b](应用+(压平[a b])))(定义参数 [[1 2 3] [1 2 3]])(addnums *args) 解决方案 你可以再次使用apply: (应用 addnums 参数) ..
发布时间:2022-01-02 23:08:28 其他开发