任何人都可以解释为什么我可以重新列出列表而不是+?
(binding [list vector]
(list 1 3))
(binding [list +]
(list 1 3))
(binding [+ list]
(+ 1 3))
Run Code Online (Sandbox Code Playgroud)
我想重新绑定+所以我可以做部分评估.
我想制作一些套装,每次运行程序都是一样的:
这是一种方法:
(def colours ["red" "blue" "green" "yellow" "cyan" "magenta" "black" "white"])
(defn colour-shuffle [n]
(let [cs (nth (clojure.math.combinatorics/permutations colours) n)]
[(first cs) (drop 1 cs)]))
; use (rand-int 40320) to make up numbers, then hard code:
(def colour-shuffle-39038 (colour-shuffle 39038))
(def colour-shuffle-28193 (colour-shuffle 28193))
(def colour-shuffle-5667 (colour-shuffle 5667))
(def colour-shuffle-8194 (colour-shuffle 8194))
(def colour-shuffle-13895 (colour-shuffle 13895))
(def colour-shuffle-2345 (colour-shuffle 2345))
colour-shuffle-39038 ; ["white" ("magenta" "blue" "green" "cyan" "yellow" "red" "black")]
Run Code Online (Sandbox Code Playgroud)
但是评估需要一段时间,而且看起来很浪费而且相当不优雅.
有没有一种方法可以直接生成shuffle 39038,而不会生成和消耗所有序列?
(我已经意识到我可以对它们进行硬编码,或者用宏来重新编译时间.这也似乎有点垃圾.)
本网站:
有一个非常讨厌的标题,总是在屏幕上,不会滚动.
如果我右键单击它并在firefox中"检查元素",那么我发现css包含"position:fixed;",如果我解开它,标题会表现出来,并按照上帝要的标题滚动.
有没有办法让firefox自动执行此操作,即删除所有位置:渲染之前所有页面中的固定行?
编辑 - - - -
经过一番思考后,我想要的是一个可以杀掉这类东西的书签.
那么如何让SciMonster看起来很有前途:
var x = document.querySelectorAll('*'); // get all elements
for (var i = 0; i< x.length; i++) {
if (x[i].style.position == 'fixed') {
x[i].style.position = 'static';
}
}
Run Code Online (Sandbox Code Playgroud)
成
javascript:???
Run Code Online (Sandbox Code Playgroud)
适合进入firefox书签的位置字段?
在win条件下,如果你去http://nautil.us,然后单击bookmarklet按钮,浮动标题会停止浮动并滚动,就像你position: fixed;在元素检查器中删除了一样.
新手在这里,善待.
前几天我都是:
sudo apt-get install python-virtualenv
Run Code Online (Sandbox Code Playgroud)
然后我(按照说明):
virtualenv env
Run Code Online (Sandbox Code Playgroud)
而Ubuntu 10.10就像:
Traceback (most recent call last):
File "/usr/local/bin/virtualenv", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2675, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 552, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: virtualenv==1.5.1
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
显然,这同样适用于替换perl的python,bash,sh等!
昆汀在下面的答案显然是正确的,所以我接受了它,但我想我的意思是'两种使用方式的优缺点是什么#!调用perl/python/bash作为脚本的解释器?'
假设我有:
'[[c c c]
[y y y]
[m m m]]
Run Code Online (Sandbox Code Playgroud)
和
'[[r g b]
[r g b]
[r g b]]
Run Code Online (Sandbox Code Playgroud)
我想要:
'[[[c,r] [c,g] [c,b]]
[[y,r] [y,g] [y,b]]
[[m,r] [m,g] [m,b]]]
Run Code Online (Sandbox Code Playgroud)
在clojure中这样做的优雅方法是什么?
我有一个来自无符号48位纳秒计数器的两个值,它可能会换行.
我需要两倍的差异,以纳秒为单位.
我想我可以假设读数是在大致相同的时间进行的,所以对于两个可能的答案,我认为我是最安全的.
他们都存储为uint64_t.因为我认为我不能拥有48位类型.
我想计算它们之间的差异,作为有符号整数(大概int64_t),考虑包装.
所以,例如,如果我开始
x=5
y=3
Run Code Online (Sandbox Code Playgroud)
然后结果x-y是2,并且如果我增加两个,x并且y即使它们包裹在最大值的顶部时也会保持这样0xffffffffffff
类似地,如果x = 3,y = 5,那么xy是-2,并且每当x和y同时递增时将保持不变.
如果我可以宣布x,y作为uint48_t和差异int48_t,我想
int48_t diff = x - y;
Run Code Online (Sandbox Code Playgroud)
会工作的.
如何使用我可用的64位算法模拟此行为?
(我认为任何可能运行的计算机都会使用2的补码算法)
PS我可能会破解这个,但我想知道是否有一个很好的标准方法来做这种事情,下一个阅读我的代码的人将能够理解.
PPS此外,这段代码最终会出现在最严格的紧密循环中,所以有效编译的东西会很好,所以如果必须有选择,速度就会超过可读性.
通过在repl中检查它,我正在玩别人的代码.
它一直调用System/exit,这会导致我的repl.这令人气愤.
在我可以访问的所有代码中,我嘲笑了这些调用.
但它也调用了一些我没有源代码的库代码,包括java和clojure,这偶尔会导致退出.
有没有办法全局捕获这些调用,所以尝试调用它们不会杀死repl线程?理想情况下,它只会抛出异常.
我想在java中我可以安装一个新的SecurityManager来获得这个效果,但我从来没有这样做过
这里似乎有一些东西:http: //jroller.com/ethdsy/entry/disabling_system_exit
所以我想的是:
(System/setSecurityManager (SecurityManager.))
Run Code Online (Sandbox Code Playgroud)
只有我需要附加
public void checkPermission( Permission permission ) {
if( "exitVM".equals( permission.getName() ) ) {
throw new ExitTrappedException() ;
}
}
Run Code Online (Sandbox Code Playgroud)
我到目前为止最好的射门是:
(System/setSecurityManager
(proxy [SecurityManager] []
(checkPermission [p]
(when (= "exitVM" (.getName p))
(throw (Exception. "exit"))))))
Run Code Online (Sandbox Code Playgroud)
或者可能
(System/setSecurityManager
(proxy [SecurityManager] []
(checkExit [n] false)))
Run Code Online (Sandbox Code Playgroud)
但他们都只是破坏了这个代表
或者有更好的方法吗?
有没有办法显示文档调用高速条中的2级隐藏文件?例如.emacs
答案很长
事实证明,未示出的文件由正则表达式控制
通常"^\\(\\..*\\)\\'",我认为这意味着以点开头的所有内容
设置正则表达式:
(setq speedbar-directory-unshown-regexp "^$")
Run Code Online (Sandbox Code Playgroud)
显示一切的诀窍.
我有一个非常大的程序,在没有警告的情况下编译gcc.
如果我在命令行上打开c99模式--std = c99,它会发出大量警告和错误.
但我喜欢这个成语 for(int i=0; i<20; i++){ code }
代替 {int i; for (i=0; i<20; i++){ code }}
有没有办法告诉gcc允许这个而且只有这个?
或者,有没有办法在我正在使用的特定功能中启用c99模式?就像是
#pragma c99 on
for(int i=0; i<99; i++)
{
code
}
#pragma c99 off
Run Code Online (Sandbox Code Playgroud) clojure ×4
c ×2
binding ×1
bookmarklet ×1
c99 ×1
css ×1
emacs ×1
evaluation ×1
firefox ×1
for-loop ×1
gcc ×1
html ×1
javascript ×1
list ×1
math ×1
partial ×1
perl ×1
permutation ×1
pragma ×1
python ×1
random ×1
shebang ×1
shell ×1
shuffle ×1
signed ×1
ubuntu ×1
unsigned ×1
vector ×1
virtualenv ×1