在Clojure中测试列表是否包含给定值的最佳方法是什么?
特别是,这种行为contains?目前令我感到困惑:
(contains? '(100 101 102) 101) => false
Run Code Online (Sandbox Code Playgroud)
我显然可以编写一个简单的函数来遍历列表并测试相等性,但肯定有一种标准的方法可以做到这一点吗?
我正在使用zsh,我正在尝试向变量添加一个新的条目(/home/david/pear/bin),PATH但我不知道如何.
最让我困惑的是,PATH我的~/.zshrc文件中没有对变量的引用,但是echo $PATH返回:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
所以PATH变量正在某处设置.
我需要能够在完全随机的时间内每天运行20次PHP脚本.我也希望它只在上午9点到晚上11点之间运行.
我熟悉在linux中创建cron作业.
我想Scanner在clojure程序中创建一个Java 类的本地实例.为什么这不起作用:
; gives me: count not supported on this type: Symbol
(let s (new Scanner "a b c"))
Run Code Online (Sandbox Code Playgroud)
但它会让我创建一个像这样的全局实例:
(def s (new Scanner "a b c"))
Run Code Online (Sandbox Code Playgroud)
我的印象是唯一的区别是范围,但显然不是.let和之间有什么区别def?
我有以下剧本,Playbook和输出
目前没有错误,运行正常.但是,它不会将输出显示到控制台.我通过其他剧本遇到了这个并通过在剧本中添加以下任务来解决这个问题:
-debug: var=output.stdout_lines
Run Code Online (Sandbox Code Playgroud)
它打印输出.但是,我试图在上面的剧本中做同样的事情并且它说变量是未定义的(代码未显示,因为它不起作用).
是否有人知道更好的方法来输出打印到控制台而不使用-debug?任何ansible引用将不胜感激.
编程语言中有哪些increment和decrement运算符scheme.我使用的是"Dr.Racket",它不接受-1+和1+作为运营商.而且,我也尝试过incf和decf,但没有用.
这是我的 .zshrc:
export REPORTTIME=3
当我运行sleep 4它不输出任何东西。如果我更改为REPORTTIME=blablabla(或任何无意义的),它不会引发错误并开始表现为REPORTTIME=0,即返回所有事情所花费的时间。
有趣的是,如果我尝试,REPORTTIME=3s我会收到以下消息:
zsh: bad math expression: operator expected at `s'
sleep 4 0.00s user 0.00s system 0% cpu 4.004 total
所以我得到了错误,但仍然是输出。
我试过RERPORTTIME="3",甚至REPORTTIME=1+2。这些都不起作用。
此外,如果我运行,python -c "import time; time.sleep(4)"我会得到相同的结果(所以问题不在于sleep)。
当然,我也尝试了其他值(除了 3)。
我正在使用 iterm2 运行 MacOS,而 zsh 是我的默认 shell。
如果这是对已经提出的问题的重复,我表示歉意.我查看了与我类似的问题并尝试了解决方案,但没有任何工作.
我在Ubuntu上,并在终端上使用zsh和oh-my-zsh.如果我输入命令ls,例如它第一次输出这样的输出%ls作为输出的第一行.这让人分心,我想摆脱它.
这是一个例子:
这是我的~/.zshrc档案:
# Path to your oh-my-zsh installation.
export ZSH=/home/user/.oh-my-zsh
# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="agnoster"
#default user
DEFAULT_USER=""
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
# Set to this to use case-sensitive completion
# CASE_SENSITIVE="true"
# Comment this out …Run Code Online (Sandbox Code Playgroud) 我希望从 clojure 生成一个长时间运行的子进程,并通过标准流与这个进程通信。
使用conch库,我可以生成和读取进程,并从out流中读取数据:
(def my-process (sh/proc "my_dumb_process"))
; read 10 lines from my-process's stdout. Will block until 10 lines taken
(take 10 (line-seq (clojure.java.io/reader (:out p))))
Run Code Online (Sandbox Code Playgroud)
我想在我的进程打印到标准输出时调用异步回调——只要标准输出流中有数据可用。
我对 clojure 有点陌生 - 有没有一种惯用的 clojure 方法来做到这一点?我查看了 core.async ,这很好,但我找不到流的非阻塞解决方案。
我正在尝试在Clojure中编写一个简洁,懒惰的Pascal三角形,旋转使得行/列跟随三角形的对角线.也就是说,我想生成以下lazy-seq的lazy-seq:
((1 1 1 1 ...)
(1 2 3 4 ...)
(1 3 6 10 ...)
...
)
Run Code Online (Sandbox Code Playgroud)
我写的代码是:
(def pascal
(cons (repeat 1)
(lazy-seq
(map #(map + %1 %2)
(map #(cons 0 %) (rest pascal)))
pascal
)))
Run Code Online (Sandbox Code Playgroud)
这样每一行都是通过将自身的右移版本添加到前一行来形成的.问题是它永远不会越过第一行,因为那时(map #(cons 0 %) (rest pascal)))是空的.
=> (take 5 (map #(take 5 %) pascal))
((1 1 1 1 1))
Run Code Online (Sandbox Code Playgroud)
什么是解决这个问题的合理方法?我对Clojure中的编程很新,并且考虑到它涉及的问题的方式非常不同,所以我非常感谢任何有这方面经验的人的建议.