如果我在Leiningen(Ver.2)中切换:warn-on-reflection,我不仅会对当前项目发出警告,还会对依赖项发出警告.(并且,例如即使我称之为"lein help",它也会例如警告关于clucy的反思 - leiningen本身的依赖.)
由于这些项目超出了我目前的范围,我希望有可能仅将警告限制在当前项目中.这有可能,怎么样?
如果我持有对持久集合的一部分的引用,整个集合是否可以被垃圾收集?我能正确理解吗?
函数gctest只是测试集合的行为.
(defn gctest
"A shot about testing the gc-ability of persistent thingies."
[n]
(take 5 (drop 100 (vec (range n)))))
main=> (def a (gctest 1e7))
main=> (def b (gctest 1e7))
main=> (def c (gctest 1e7))
main=> (def d (gctest 1e7))
main=> (def e (gctest 1e7))
main=> (def f (gctest 1e7))
main=> (def g (gctest 1e7))
OutOfMemoryError GC overhead limit exceeded clojure.lang.ArrayChunk.dropFirst (ArrayChunk.java:54)
Run Code Online (Sandbox Code Playgroud)
我已经听说过头部保留,但这看起来有点笼统或者不是吗?
我想要了解的是如何使用大变化的收藏.我希望收藏品的大部分内容会随着时间的推移而发生变化,原则上大部分可以被垃圾收集,但不是全部.
有没有一种标准的方法来应对这种情况?
在组织模式中,以冒号开头的行被格式化为源代码.(http://orgmode.org/manual/Literal-examples.html)
在有文化的Haskell中,源代码行以更大的符号开头.
我想用org-mode markdown编写有文化的Haskell,这是我目前的首选格式.
我假设我无法更改Haskell编译器,我的问题是:
在org模式下,我可以以某种方式使代码行标记更大吗?(我试图自己找到它,但是因为org.el是一个865k文件,22k loc,我还是迷路了.)
Bob Glickstein 在“编写 GNU Emacs 扩展”的第 3 章中描述了一种建议滚动功能的方法。(他建议让它们可逆,所以我们必须在滚动之前保存状态。)
例如,对于向上滚动命令,此建议是这样完成的
(defadvice scroll-up-command (before reversibilate activate compile)
"If it wants to be reversible, it must save the former state."
(save-before-scroll))
Run Code Online (Sandbox Code Playgroud)
好。我当然必须对所有滚动命令执行此操作。所以我想对它们进行排序,并想一起为它们提供建议。
(setq reversible-scroll-commands
[scroll-up-command
scroll-down-command
scroll-left-command
scroll-right-command])
Run Code Online (Sandbox Code Playgroud)
(我使用一个向量来保存 5 个引号。)
但现在我被困住了。
(mapcar
(lambda (fun-name)
(defadvice fun-name (before reversibilate activate compile)
"If it wants to be reversible, it must save the former state."
(save-before-scroll)))
reversible-scroll-commands)
Run Code Online (Sandbox Code Playgroud)
将建议(不存在的)函数 fun-name 四次,因为 defadvice 是一个宏,并且不评估 fun-name。
有什么办法吗?
(我正在使用 Emacs 24)
我刚刚在http://regexcrossword.com/上做了有趣的正则表达式填字游戏- 并且发现我不明白量化群体意味着什么,例如(.)+或(.)*
让我试试http://ole.michelsen.dk/tools/regex.html,它提供了JavaScript和PHP正则表达式引擎:
要匹配的字符串是"Trololo!" (不带引号).(如果打开"全局匹配"改变了某些东西,它会被添加为引导版本,即JS',因为它在PHP模式下没有任何改变.)
JS, (.)+ => 0: Trololo! 1: !
JS', (.)+ => 0: Trololo!
PHP, (.)+ => 0: Trololo! 0: !
JS, (.)* => 0: Trololo! 1: !
JS', (.)* => 0: Trololo!
PHP, (.)* => 0: Trololo! 1: 0: ! 1:
JS, (.){5} => 0: Trolo 1: o
JS', (.){5} => 0: Trolo
PHP, (.){5} => 0: Trolo 0: o
JS, (.){4} => 0: Trol 1: l
JS', (.){4} => 0: Trol …Run Code Online (Sandbox Code Playgroud) 我想做64位算术(不是自然数),所以我需要两个long的乘法来静默地溢出.
(unchecked-multiply Long/MAX_VALUE 3)
Run Code Online (Sandbox Code Playgroud)
诀窍.但
(def n Long/MAX_VALUE)
(unchecked-multiply n 3)
Run Code Online (Sandbox Code Playgroud)
给出溢出异常.我究竟做错了什么?
(Clojure 1.5.1)
Cx Cc Emacs时不时会宣布"这个Emacs会话有客户端;无论如何退出?".
(我在Windows 7上使用Emacs 24beta,以防万一.)
我希望打开一些通过emacsclientw.exe打开的文件 - 但我没有看到任何文件.
(我有git config --global core.editor"/c/lang/emacs-24beta/bin/emacsclientw.exe")
有没有办法找出哪些缓冲区有客户端?(或者还有什么可以寻找的吗?)
我想使用Debian的测试分发(目前那是"wheezy"而不是稳定的"挤压"),我即将调整我的/etc/apt/sources.list文件.
我知道我必须替换主要条目的wheezy挤压.
但我是否必须为安全性(挤压/更新)和更新(挤压更新)这样做?
(试图通过探测边界来理解自我类型的使用.)
这不能被实例化(D和String是类,但必须混合其中一个.加上String是final.).但它还有其他用途吗?
class D {
foo: String =>
def f2 = foo.substring(1)
}
Run Code Online (Sandbox Code Playgroud)
更新:对不起,我似乎不善于提问.我想知道的是这个奇怪的特殊情况是否有意义.D类永远无法实例化的情况,如1.我不能混合使用String,因为它不是tarit.2.我不能混合D,因为.. 3.我不能扩展String,因为它是最终的.
clojure ×3
emacs ×3
debian ×1
defadvice ×1
elisp ×1
haskell ×1
javascript ×1
leiningen ×1
org-mode ×1
php ×1
quantifiers ×1
regex ×1
regex-group ×1
scala ×1
self-type ×1