我可爱的功能:
(defun f (x)
(lambda (y) (+ x y)))
Run Code Online (Sandbox Code Playgroud)
然后,我期待这个:
(funcall (f 2) 2)
Run Code Online (Sandbox Code Playgroud)
返回4.但是,我得到了这个:
Debugger entered--Lisp error: (void-variable x)
Run Code Online (Sandbox Code Playgroud)
那么如何从内部函数中捕获变量呢?
为什么python线程消耗这么多内存?
我测量产生一个线程消耗8兆内存,几乎和整个新的python进程一样大!
操作系统:Ubuntu 10.10
编辑:由于受欢迎的需求,我将给出一些无关的例子,这里是:
from os import getpid
from time import sleep
from threading import Thread
def nap():
print 'sleeping child'
sleep(999999999)
print getpid()
child_thread = Thread(target=nap)
sleep(999999999)
Run Code Online (Sandbox Code Playgroud)
在我的盒子上,pmap pid将给出9424K
现在,让我们运行子线程:
from os import getpid
from time import sleep
from threading import Thread
def nap():
print 'sleeping child'
sleep(999999999)
print getpid()
child_thread = Thread(target=nap)
child_thread.start() # <--- ADDED THIS LINE
sleep(999999999)
Run Code Online (Sandbox Code Playgroud)
现在pmap pid将给出17620K
因此,额外线程的成本是17620K - 9424K = 8196K
即.87%的人正在运行一个全新的独立流程!
现在不仅仅是,错了吗?
我在这里为npm提出了类似的问题:npm相当于`pip install -r requirements.txt`
这是宝石.
什么是宝石相当于:
pip freeze > requirements.txt
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud) 我把它们放在我的配置文件中:
(add-hook 'sgml-mode-hook (lambda () (message "SGML")))
(add-hook 'html-mode-hook (lambda () (message "HTML")))
(add-hook 'xml-mode-hook (lambda () (message "XML")))
Run Code Online (Sandbox Code Playgroud)
打开.html文件时,它会按预期打印"SGML"和"HTML".但是在打开.xml文件时,没有打印出来.
问题:那么如何为xml文件添加钩子?
对不起,这里有一个新问题,但Haskell如何知道不会将引用透明度应用于例如readLn或putStrLn两次相同的字符串?是因为IO参与了吗?IOW,编译器不会将引用透明度应用于返回的函数IO吗?