我正在尝试使这个示例程序工作
(defn foo
([x] (foo x []))
([x current]
(when (> x 0)
(recur (dec x) (conj current x)))))
Run Code Online (Sandbox Code Playgroud)
当我调用这个函数(foo 5)时,我应该得到[1 2 3 4 5],但它只返回nil.我究竟做错了什么?
谢谢,穆尔塔扎
我正在尝试解决项目euler第二个问题.为什么下面的代码导致堆栈溢出?我正在使用recur所以它不应该存储堆栈上的所有递归调用.
(defn sum
[[a b]]
[b (+ a b)])
(defn fib-r
([n] (fib-r n 0 [0 1]))
([n s [a b]]
(if (= n 0)
s
(let [[c d] (sum [a b])
e (if (even? c) c 0)
f (+ s e)]
(recur (dec n) f [c d])))))
(fib-r 4000000)
Run Code Online (Sandbox Code Playgroud) 假设我有一个包含 ns - (ns abc.a) 的代码文件。现在我开始我的 repl 并在 ns- (use-ns 'abc.a) 中。
现在,如果我更改文件中的任何代码,如何重新加载 repl 中的 ns?
谢谢,穆尔塔扎
我在rake db:migrate中面临一个问题.当我使用scaffold创建模型,运行db:migrate然后使用scaffold d Posts删除模型时,问题就出现了.
现在我再次使用scaffold g创建模型,并运行db:migrate.由于用户表已经存在,它给了我一个错误.我该如何解决这个问题?
murtaza@murtaza-dev:~/workspace/rails/base$ rake db:migrate
== CreatePosts: migrating ====================================================
-- create_table(:posts) rake aborted! An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "posts" already exists: CREATE TABLE "posts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "content" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
Tasks: TOP => db:migrate (See full trace by running task with --trace) murtaza@murtaza-dev:~/workspace/rails/base$ rake db:migrate --trace
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute …Run Code Online (Sandbox Code Playgroud) 我和lein2工作了一段时间,它一直很好.然而今天麻烦开始了,无论我用lein2键入哪个命令,它都会给我以下错误.我尝试删除〜/ .m2,在这种情况下,它再次下载deps但最终给了我同样的错误.
我也试过删除并再次下载lein2.以下是它给出的错误 -
检查:依赖关系和:错别字的存储库.指定的jar可能不在任何存储库中.如果是这样,请参阅http://j.mp/repeatability下的"Free-floating Jars" 无法解析依赖项
无论项目或文件夹如何,都会发生错误.下面是我的〜/ .lein/profiles.clj -
{:user {:plugins [[lein-immutant "0.8.1"]
[lein-difftest "1.3.7"]
[lein-marginalia "0.7.1"]
[lein-pprint "1.1.1"]
[lein-swank "1.4.4"]
[lein-ring "0.7.5"]
[lein-cljsbuild "0.2.7"]
[lein-eclipse "1.0.0"]
[lein-git-deps "0.0.1-SNAPSHOT"]
[lein-outdated "0.1.0"]
[lein-noir "1.2.1"]
[lein-beanstalk "0.2.2"]
[lein-cloudbees "1.0.0"]
[lein-pedantic "0.0.3"]
[clj-ns-browser "1.3.0"]
[lein-ritz "0.4.2"]
[lein-midje "2.0.0-SNAPSHOT"]]}}
Run Code Online (Sandbox Code Playgroud)
下面是project.clj文件 -
(defproject hs-2 "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.4.0"]
[net.cgrand/moustache "1.1.0" :exclusions [org.clojure/clojure]]
[enlive "1.0.1" :exclusions [org.clojure/clojure]]
[ring "1.1.5"]
[clj-time …Run Code Online (Sandbox Code Playgroud) 鉴于以下功能 -
(defn ^:export hi [] (+ 2 3))
Run Code Online (Sandbox Code Playgroud)
我想写一个宏来执行此操作 -
(defex hi [] (+ 2 3))
Run Code Online (Sandbox Code Playgroud)
该宏defex只是在函数前面添加 ^:export 元数据。我怎么做?
编辑 - 我检查了 repl (meta hi) 上的函数,它给出了 nil。所以很可能我不想添加元数据,而是以上述方式定义一个函数。
谢谢,穆尔塔扎
在Sublime Text 2中有一个名为sublime linter的包,它会突出显示在您键入时出现语法错误的任何部分.
在emacs中有任何类似的包吗?
谢谢穆尔塔扎
我有一个结构,其中第一个元素是一个函数,其余的args到fn.现在每个arg可以反过来成为具有类似charectristic的向量.
[+ 1 2 3 [- 4 3] 5 6 [- 9 8 [+ 5 6]] 4 5]
如何在给定任何此类向量的情况下编写递归fn来计算结果?还有什么方法可以评估它,因为如果向量可以被()替换,结构将是一个有效的clojure形式?
我有一个seq (2 3 1 4).
我想迭代它,并且当下一个元素更小时,prev元素将替换两个元素另一个seq.'( - 4 1).
所以f('(2 3 1 4))=>(2( - 3 1)4).我怎么写呢?
基本上 -
1)我想同时访问seq中的两个相邻元素.2)编辑并返回该点的新seq.3)继续处理新返回的seq.
一般来说,实现上述3的机制是什么.(map,reduce都让我一次只能访问一个elem.)
我有一些我想在命令行上运行的exec脚本.
哪个文件夹我应该把他们~/bin还是/usr/local/bin?
这两个文件夹有什么区别?
哪个是什么时候用的?