这与什么是电话/ cc有关?但是我不想为了我自己的目的而劫持这个问题,而且它的一些论据就像对setjmp/longjmp的类比一样逃避了我.
我认为我对延续是什么有足够的了解,我认为它是当前调用堆栈的快照.我不想讨论为什么这可能有趣或者你可以用延续做什么.我的问题更具体地说,为什么我必须提供一个函数参数来调用/ cc?为什么不调用/ cc只返回当前的延续,所以我可以用它做任何事情(存储它,调用它,你命名它)?在另一个问题(http://community.schemewiki.org/?call-with-current-continuation-for-C-programmers)的链接中,它谈到"基本上它只是一种干净的方式来延续你并且不要让后续跳回到保存的点.",但我没有得到它.这似乎不必要地复杂化.
哪些是最成熟,最受支持的编写图形程序的解决方案?
我一直在使用C++和OpenGL/GLUT,但我想尝试一种更灵活和更具表现力的方法.
Ruby和Processing?Python和OGRE?什么事情对你有用?
我知道Eiffel(祖先)和Racket都实现了"按合同设计"的功能.可悲的是,我不确定如何区别于另一个.Eiffel的DBC依赖于OOP范式和继承,但是Racket,一种非常不同的语言如何解释这种差异?
我在球拍和麻省理工学院计划中尝试使用以下代码,让我惊讶的是编译器错误
(foldr and #t '(#t #t #f))
Run Code Online (Sandbox Code Playgroud)
有没有办法使用reduce/fold方式来检查列表是否只包含true或false?我知道lambda可以完成这项工作,但它确实让我们想知道为什么这不是一个有效的代码.我记得我可以在Haskell中做到.....
TIA.
在Common Lisp中,如果我想检查列表是否为空,我可以简单地使用列表本身作为条件,因为所有非零列表都被认为是真的.但是,我发现在Scheme中,同样会让Scheme认为我正在尝试调用一个函数.有没有更好的方法来检查Scheme中的列表是否为null而不是定义另一个函数(not (null? x))
呢?
如何使用GIMP中的Script-FU从所有文件夹中获取文件列表(*.jpg)?
(let* ((filelist (cadr (file-glob pattern 1)))
Run Code Online (Sandbox Code Playgroud)
这只从当前文件夹中获取文件.
我正在为类似于Scheme的语言开发编译器,并正在阅读Dybvig的论文.在其中,他说通过在堆栈上而不是堆上分配调用帧来实现大部分性能提升.为了在闭包和延续的情况下实际完成这项工作,需要做几个技巧.
我的问题是这种性能增益来自何处?这纯粹是因为我们减少了对垃圾收集器的压力吗?
换句话说:假设我们有无限的内存量,堆叠分配的调用帧是否仍然比堆分配的调用帧快?
在将一些Fortran翻译为Scheme/Racket时,我遇到了这个功能:
; EPSILON(X) The least positive number that added
; to 1 returns a number that is greater than 1
Run Code Online (Sandbox Code Playgroud)
如何在Scheme中找到该号码?
我在网上找到的所有信息都是关于编写Web服务器的,但似乎很少有关于Web客户端有用的函数.理想情况下,我希望函数看起来像这样:
(website "http://www.google.com")
Run Code Online (Sandbox Code Playgroud)
并返回一个包含整个网页的字符串,但我会对任何有效的内容感到高兴.
在我的大学,我们不得不与Racket合作,因为我很喜欢它,我从No Starch购买了最近出版的书"Realm Of Racket".
到目前为止它很棒,但是,当他们试图解释eq时,我无法弄清楚它们在第4章中的含义是什么?作品:
这个想法似乎得到了书中的以下句子的证实:"eq?比较改变一个结构是否会改变其他结构......"太棒了!让我们将它与下面的Java代码进行比较:
Point p1 = new Point(5, 5);
Point p2 = p1;
System.out.println(p1 == p2); // true, since the reference has been copied.
System.out.println(p1.x); // 5
System.out.println(p2.x); // 5
p1.x = 42;
System.out.println(p1.x); // 42
System.out.println(p2.x); // Accordingly, 42
Run Code Online (Sandbox Code Playgroud)
让我们在Racket中尝试一下:
(define cons1 (cons 1 empty))
(define cons2 cons1)
(eq? cons1 cons2) ;; #t, since the refernce has been …
Run Code Online (Sandbox Code Playgroud)