小编Joh*_*den的帖子

在Clojure中调试?

使用repl时,调试Clojure代码的最佳方法是什么?

debugging clojure

224
推荐指数
10
解决办法
4万
查看次数

如何在向量中找到项目的索引?

任何想法????应该是什么?内置了吗?完成这项任务的最佳方法是什么?

(def v ["one" "two" "three" "two"])

(defn find-thing [ thing vectr ]
  (????))

(find-thing "two" v) ; ? maybe 1, maybe '(1,3), actually probably a lazy-seq
Run Code Online (Sandbox Code Playgroud)

clojure

75
推荐指数
6
解决办法
5万
查看次数

我可以在某个地方ssh,运行一些命令,然后给自己一个提示吗?

我发现自己需要登录各种服务器,设置环境变量,然后以交互方式工作.

例如

$ ssh anvil
jla@anvil$ export V=hello
jla@anvil$ export W=world
jla@anvil$ echo $V $W
hello world
Run Code Online (Sandbox Code Playgroud)

如何组合前几个命令,然后让自己处于提示符状态?

就像是:

$ ssh anvil --on-login 'export V=hello; export W=world;'
jla@anvil$ echo $V $W
hello world
Run Code Online (Sandbox Code Playgroud)

显然这是一个模型问题.我真正要问的是"我如何ssh到另一台机器,运行一些命令,然后继续,好像我是手动运行它们?"

ssh shell

32
推荐指数
3
解决办法
1万
查看次数

clojure的语法引用如何工作?

clojure中的各种特殊字符是事物的缩写

(quote (a b)) 是相同的 '(a b)

正如你可以通过评估看到:

user> ''(a b)
(quote (a b))
Run Code Online (Sandbox Code Playgroud)

这似乎是语法缩写,这让我觉得很好.

但语法引用`似乎很特别.我想不出什么相当于

`(a b)
Run Code Online (Sandbox Code Playgroud)

我会猜到类似的东西(syntax-quote (a b)),但是它不起作用,如果我猜错了,我就无法找出它真正被称为什么.

user> '`(a b)
(clojure.core/seq (clojure.core/concat (clojure.core/list (quote user/a)) (clojure.core/list (quote user/b))))
Run Code Online (Sandbox Code Playgroud)

有点神秘.

大概读者正在做一些特别的事情,也许是因为它需要知道命名空间?

有趣的是,syntax-quote中使用的特殊语法确实可以正常工作:

user> '~a
(clojure.core/unquote a)
user> '~@a
(clojure.core/unquote-splicing a)
user> '~'a
(clojure.core/unquote (quote a))
Run Code Online (Sandbox Code Playgroud)

除了这一个:

user> 'a#
a#
Run Code Online (Sandbox Code Playgroud)

我本以为会产生类似的东西 (unquote (gensym "a"))

我确实意识到我在这里有点虚弱,应该去阅读代码.如果没有人想解释正在发生的事情或提供参考,那么任何人都可以给我一个关于如何找到相关代码以及寻找什么的提示吗?

clojure

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

bash:如何连接两个命令的输出,以便我可以将它们连接到第三个?

$ hg status
Run Code Online (Sandbox Code Playgroud)

$ hg status --ignored
Run Code Online (Sandbox Code Playgroud)

给出非常相似的输出.我想连接它们以便我可以将它们提供给awk,好像有一个hg状态--all(或svn的svn状态--no-ignore)

我想的是:

$ echo "$(hg status)" "$(hg status --ignored)" | awk  ' ( $1 == "?" ) || ( $1 == "I") { print $2 }' | xargs rm -r
Run Code Online (Sandbox Code Playgroud)

制作一个"确实非常干净"的命令,但它似乎偶尔会留下一个文件,可能是因为新行缺失或其他东西.

bash shell mercurial awk concatenation

25
推荐指数
3
解决办法
2万
查看次数

如何在编译时在gcc中显示#define的值

到目前为止,我已经达到了:

#define ADEFINE "23"
#pragma message ("ADEFINE" ADEFINE)
Run Code Online (Sandbox Code Playgroud)

哪个有效,但如果ADEFINE不是字符串怎么办?

#define ADEFINE 23
#pragma message ("ADEFINE" ADEFINE)
Run Code Online (Sandbox Code Playgroud)

原因:

警告:格式错误的'#pragma message',被忽略

理想情况下,我希望能够处理任何值,包括undefined.

c macros gcc pragma c-preprocessor

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

单段命名空间有什么问题?

我已经在几个地方读过,在clojure中不鼓励使用单段命名空间.

事实上,我见过的几乎每个库都有(需要'lib.core)而不是(require'lib).

为什么?


编辑:我有点傻.对于单个段命名空间如何可能是坏事的简明示例,将给出额外的功劳.

namespaces clojure

21
推荐指数
2
解决办法
1964
查看次数

如何从R生成文档(.rtf,.doc,.odt)

什么是生成字处理器文件的最佳方法(理想情况下,尽可能与平台无关,但本机Word格式可以),其中带有图像,来自统计语言R?

document openoffice.org r ms-word ms-office

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

如何在tcsh脚本中回显命令?

是.我知道我不应该用它来编写脚本.是.这是垃圾.我确实是个傻瓜.

然而.

我想查看脚本正在执行的命令,以便进行调试.我认为你在bash脚本中使用set -x或set -v获得此效果.

所以,例如,如果脚本是

#!/bin/tcsh

echo "Hello"
Run Code Online (Sandbox Code Playgroud)

然后当它跑的时候,我会看到

echo "Hello"
Hello
Run Code Online (Sandbox Code Playgroud)

debugging csh tcsh echo

17
推荐指数
2
解决办法
2万
查看次数

如何从一组文件中删除与模式匹配的所有行?

我有一个恼人的闭源工具,它将特定信息写入其配置文件.如果您尝试在其他文件上使用配置,则会加载旧文件.哎呀...

幸运的是,配置文件是文本,因此我可以对它们进行版本控制,结果发现,如果只是从文件中删除了违规行,则不会造成任何损害.

但是该工具不断将线路放回去.所以每次我想检查配置文件的新版本时,我都必须删除包含该符号的所有行openDirFile.

我即将构建某种bash命令来在每个文件上运行grep -v,将结果存储在临时文件中,然后删除原始文件并重命名临时文件,但我想知道是否有人知道一个很好的清洁解决方案,或者已经编造并调试了类似的调用.

为了额外的功劳,如何在不破坏同一目录中的符号链接的情况下完成这项工作(favourite.rc-> signals.rc)?

bash grep sed pattern-matching

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