7得票2回答
避免显示结构体三次。

I have define a struct as below, (struct vector (x y z) #:methods gen:custom-write [(define (write-proc vector port mode) (let ([print (i...

28得票2回答
如何通过命令行将文件加载到Racket中?

我一直在尝试通过命令行(通过'racket')启动 racket 程序,但一直没有成功。根据文档(这里),通过传递 -f,然后是一个文件名,应该能够评估该文件。然而,我似乎无法使其工作。作为一个测试,我创建了以下文件:;test.rkt #lang racket (define a 1) 然后...

13得票4回答
有没有一种快速的语言支持可移植的continuations?

我正在寻找一种快速的语言(即可以编译成本地代码以实现性能,不超过 C 3-4 倍),并支持可移植的 continuation。所谓可移植的 continuation 是指在一台计算机上序列化后,在另一台计算机上反序列化。 我知道 SISC 可以做到这一点(Java 中的 Scheme 实现)...

12得票3回答
在Ubuntu终端中如何运行Scheme程序?

我已经搜索了,但似乎找不到这个非常基础的问题的答案。我刚接触mit-scheme,并且想要重新创建“Hello World”,但是不想通过提示符来完成,我想要在一个scheme文件中包含以下代码: (define hello-world (lambda () (begin ...

19得票4回答
为什么Scheme不支持一级环境?

我一直在阅读SICP(计算机程序的构造和解释),很高兴发现这个精彩的特殊形式:“make-environment”,他们在“包”章节4.3的摘录中展示了如何与eval结合使用,作为编写模块化代码的一种方式。 (define scientific-library (make-environ...

19得票3回答
在SICP中使用lambda定义cons/car/cdr的用法

当我开始对Racket和Scheme中lambda的使用有些模糊的理解时,我遇到了SICP中以下“替代”cons和car的定义。(define (cons x y) (lambda (m) (m x y))) (define (car z) (z (lambda (p q) p))...

8得票4回答
Scheme获取列表中的最后一个元素

我正在尝试编写一个简单的Scheme函数,用于返回列表的最后一个元素。我的函数看起来应该能够正常工作,但是我似乎在某些地方出了问题: (define (last_element l)( (cond (null? (cdr l)) (car l)) (last_element (cdr...

26得票6回答
无限数据结构有哪些令人信服的使用案例?

一些语言(如Haskell、Clojure、Scheme等)具有惰性求值。惰性求值的一个“卖点”是无限数据结构。这有什么好处?有哪些情况下能够处理无限数据结构明显具有优势的例子?

17得票16回答
修复Lisp语法

作为一个Lisp的新手,我想知道Lisp的语法是否可以“修正”? 有些人说Lisp的语法是它最大的优势之一,但我不太理解。 难道不能用空格、换行和缩进的组合来替换“显而易见”的括号吗?就像Python一样? 在我看来,括号是Lisp代码中使用最多的字符。我在想这是否属实,但如果是,这是否...

37得票8回答
Windows下的Scheme集成开发环境

什么是适合Windows的Scheme IDE?好吧,我承认; 我不像RMS那样厉害,并且不想使用Emacs或任何基于字符的界面 - 我想要一个带有着色、REPL和特定、文档良好的Scheme方言的内联帮助的图形IDE。我已经搜索过了,PLT Scheme / DrScheme似乎是最好的选择...