小编nha*_*nha的帖子

Clojure - 编写 split-first 和 split-last 的惯用方式

编写以下函数的惯用方式是什么?

(split-first #"." "abc.def.ghi") ;;=>["abc", "def.ghi"]
(split-last #"." "abc.def.ghi") ;;=>["abc.def", "ghi"]
Run Code Online (Sandbox Code Playgroud)

有一个明显的(丑陋的?)解决方案使用split,但我确信有更优雅的解决方案?也许使用 regexes/indexOf/split-with ?

split clojure

2
推荐指数
1
解决办法
1264
查看次数

nix用户包与系统包

我在开发环境中使用了Vagrant+ virtualBoxDebian 8//Ubuntuimage.

我想使用nix进行配置,但我不能nixOS完全正确地工作(即使用网络,配置......),但我非常乐意切换.所以我正在回归nix + Debian 8nix + Ubuntu模仿生产服务器.

我不能完全得到之间的区别user packagessystem packages,什么是最好的使用在我的情况下,为了能够重新使用到生产服务器.

我应该使用nix -i或编辑configuration.nix文件来安装软件包吗?

nix

2
推荐指数
1
解决办法
855
查看次数

Clojure元数据在某些表单上丢失

我对以下表达式的行为差异感到困惑:

(pr (meta ^{:a 0} (list 1 2))) ;; prints nil returns nil

(pr (meta ^{:a 0} '(1 2)));; prints {:line 110, :column 20} returns nil

(pr (meta ^{:a 0} (range 1 3))) ;; prints nil returns nil

(pr (meta ^{:a 0} [1 2])) ;; prints {:a 0} returns nil
Run Code Online (Sandbox Code Playgroud)

这是使用clojure 1.8.0.我欢迎解释为什么结果不同.

metadata clojure

2
推荐指数
1
解决办法
40
查看次数

Scala println在输出中添加括号

我正在scala中迈出第一步,这里是一个"hello world"代码:

package test
object Main {
def main(args: Array[String]): Unit = {
        println("Blabla something : " + 3)
        println("Blabla something : " , 3)
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

Blabla something : 3
(Blabla something : ,3)
Run Code Online (Sandbox Code Playgroud)

为什么在第二行打印括号以及","?我期待与第一行相同的输出.

注意:我尝试搜索 scala println括号等等,但我得到的是关于如何从代码中删除括号的帖子,而不是从输出中删除.

scala

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

ClojureScript 中的流畅界面

我正在 ClojureScript 中创建一个库,它将公开一个公共 JavaScript API。由于它必须模仿现有 JavaScript 库的 API,因此我想提供相同类型的流畅 API:

myLib.prepareToDo()
     .something()
     .and('also')
     .somethingElse()
     .run(function(err, result) {
         console.log("yay!");
});
Run Code Online (Sandbox Code Playgroud)

在 Javascript 中,我们可以创建一个流畅的 API,就像这个站点点):

var MyClass = function(a) {
    this.a = a;
}

MyClass.prototype.foo = function(b) {
    // Do some complex work   
    this.a += Math.cos(b);
    return this;
}
Run Code Online (Sandbox Code Playgroud)

然后我可以这样称呼它:

var obj = new MyClass(5);
obj.foo(1).foo(2).foo(3);
Run Code Online (Sandbox Code Playgroud)

现在,据我所知,thisClojureScript 中没有 的概念,尽管显然可以访问它this-as

我不知道如何使用它,因此我的问题。

如何在 ClojureScript 中创建流畅的界面?

clojure clojurescript

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

ClojureScript cljsbuild在没有优化的情况下不会加载依赖项

我想在我的ClojureScript构建中使用figwheel.

lein cljsbuild auto已经合作,但我必须把它:optimisations :whitespace.

否则我在浏览器中收到一条消息:

Uncaught ReferenceError: goog is not defined
Run Code Online (Sandbox Code Playgroud)

然而,figwheel需要:optimisations :none运行.这是我的leiningen文件的一部分:

:cljsbuild {
          :builds
          [{:id "dev"
            :source-paths ["src/cljs"]

            :figwheel { :websocket-host "localhost"
                       ;;:on-jsload "example.core/fig-reload"
                       :autoload true
                       :heads-up-display true
                       :load-warninged-code true
                       ;;:url-rewriter "example.core/fig-url-rewrite"
                       }

            :compiler {;; :main
                       :output-to  "resources/public/js/gdb/gdb.js"
                       :output-dir "resources/public/js/gdb/cljsbuild-dev"
                       ;;:asset-path "js/out"

                       :optimizations :none
                       :source-map "resources/public/js/gdb/gdb.js.map"
                       :pretty-print true}}]}
Run Code Online (Sandbox Code Playgroud)

我缺少什么来获取缺少的依赖项?

google-closure-compiler leiningen clojurescript figwheel

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

Emacs Clojure - 移动parens

是否有一个Emacs包用于移动Lisp(特别是Clojure)S表达式?

注意:我一直在看S-Expressions之间如何移动光标,但这不是我想要的.我想移动表达式:

我正在寻找类似的东西:

(a-fn 1 2 3)
'(another-thing 2 3 4)
?cursor here
Run Code Online (Sandbox Code Playgroud)

然后,如果我做"swap-sexp"的"移动sexp-up"之类的事情,结果应该是:

?cursor here
'(another-thing 2 3 4)
(a-fn 1 2 3)
Run Code Online (Sandbox Code Playgroud)

emacs clojure

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

在Clojure中打印并返回另一个值

我有一个Clojure初学者问题,为什么以下代码不起作用:

(defn aFun [n]
  (if (< -10 n 10) 
       ((println "Single digit" n) "A return value")
       ((println "More digits" n) "Another return value")))
Run Code Online (Sandbox Code Playgroud)

NullPointerException在运行时得到了.为什么?

这个功能有效:

(defn aFun [n]
  (if (< -10 n 10) 
       "A return value"
       "Another return value"))
Run Code Online (Sandbox Code Playgroud)

还有这个:

(defn aFun [n]
  (if (< -10 n 10) 
       (println "Single digit" n)
       (println "More digits" n)))
Run Code Online (Sandbox Code Playgroud)

我想同时做两件事:(计算和)返回一个值,同时首先打印一些东西.我确信这是非常基本的(甚至不确定如何标题我的问题),但我无法得到我做错的事.

clojure

0
推荐指数
1
解决办法
1871
查看次数

如何从变量或函数中获取名称字符串?

我想在Clojure中将变量的名称作为字符串.但是,与此问题不同,我会得到原始绑定的名称(不确定术语是否正确,所以请参阅下面的示例).

(def sample-data1 {:data 1})
(def sample-data2 {:data 2})
(def sample-data3 {:data 3})


(doseq
    [my-var [sample-data1 sample-data2 sample-data3]]
  (println (name 'my-var)))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,而不是打印

my-var
my-var
my-var
Run Code Online (Sandbox Code Playgroud)

我想拥有 :

sample-data1
sample-data2
sample-data3
Run Code Online (Sandbox Code Playgroud)

我怎么在Clojure中做到这一点?

注意:这可能不是真正的应用程序中最漂亮的事情.但我的问题是,如果这是可能的.

澄清一下:这是为了进行原型设计.在这个特定的情况下,而不是打印我填充(postgres)数据库与假数据,我手工编写变量,我想跟踪我的变量最终没有编写太多代码.

clojure

0
推荐指数
1
解决办法
254
查看次数

Ansible在ubuntu 16上安装RethinkDB

我正在尝试使用ansible 在ubuntu 16.04上安装特定版本的RethinkDB.

我用 :

- name: Ensure rethinkDB package repository is present
  apt_repository: repo='deb http://download.rethinkdb.com/apt xenial main' state=present
  tags:
    - rethinkdb

- name: install RethinkDB
  package: name=rethinkdb-2.3.2 state=latest
  tags:
    - rethinkdb
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

任务[安装RethinkDB]*******************************************************任务路径:/Users/nha/.../playbook.yml:173致命:[机器]:失败!=> {"已更改":false,"failed":true,"msg":"没有包匹配'rethinkdb-2.3.2'可用"}}重试,使用: - limit @ ops/ansible/playbook.retry

即使不考虑版本,我也会收到错误:

任务[安装RethinkDB]*******************************************************任务路径:/Users/nha/.../playbook.yml:173致命:[机器]:失败!=> { "cache_update_time":0, "cache_updated":假的, "改变":假的, "失败":真正的 "味精": "'在/ usr/bin中/ apt-get的-y -o \" DPKG ::选项:: = - force-confdef \" - o \"Dpkg :: Options :: = - force-confold \"install'rethinkdb''失败:E:有未经身份验证的包,-y没有使用 - 允许,未经认证\n"'标准错误’:'E:有未经验证的软件包和-y不--allow-未经验证\n’,'标准输出使用了’:"读取软件包列表... \nBuilding依赖关系树.. \nReading状态信息... \n以下额外的软件包将被安装:\n libcurl3 \n以下新的软件包将被安装:\n libcurl3 rethinkdb\N0升级,新安装2,0删除和0不升级\nNeed得到11.2 …

package ansible rethinkdb

0
推荐指数
1
解决办法
410
查看次数