在标准Scheme中,可以编写
(if (> x 2)
(set! x (- x 1)))
Run Code Online (Sandbox Code Playgroud)
但这在Racket中是不可能的 - Racket if总是需要两个手臂.为什么?
我读过McCarthy 1960年关于LISP的论文,没有发现任何与用户定义的宏或正常的订单评估相似的内容.我想知道宏首次出现在编程语言历史中(以及Lisp历史中):
谢谢!
最近,我开始在DrRacket中编写Racket(以前称为Scheme).我很快就开始错过DrRacket中VIM的所有功能,所以我想使用VIM进行我的方案(球拍)编程.
我知道Emacs可能是强烈的lisp编程的最佳选择,但我想要的只是编写一个scheme(racket)文件检查语法,然后运行它.
不幸的是,我无法弄清楚,如何在文件的命令行中调用"racket"以使其与DrRacket一样.
我正在运行Ubuntu 10.10 Maverick Meerkat,VIM 7.3,我从官方网站下载并安装了Racket.
帮助开始将非常感激.
我正在尝试破译文档
call-with-continuation-prompt适用
proc于给定的args,当前延续由提示扩展.提示标记为prompt-tag,必须是default-continuation-prompt-tag(默认)或的结果make-continuation-prompt-tag.结果proc是call-with-continuation-prompt调用的结果.
我理解它所说的"适用proc于arg当前延续的给定s"的部分,然后它就是那里的乱码.
对于延续"延伸"甚至意味着什么,以及"提示"如何"延伸"?
根据SICP第1.2.6节,练习1.22:
大多数Lisp实现包括一个名为runtime的原语,它返回一个整数,指定系统运行的时间(例如,以微秒为单位测量).
我正在使用DrScheme,运行时似乎不可用,所以我正在寻找一个好的替代品.我在PLT-Scheme Reference中发现有一个current-milliseconds原语.有谁知道Scheme中的计时器是否具有更好的分辨率?
我按照本教程成功安装了Emacs,STk,Quack.
问题是如何加载我的程序,就像我在Racket中一样?
在Racket中,我可以在上方窗口中编辑我的代码,键入一些代码,保存并运行.然后下面的窗口将自动加载我刚写的代码.然后我可以玩它.
我试过Mx run-scheme.它只会让我进入类型mit方案.然后它说不存在这样的文件或目录.然后我尝试了F5(该网站的作者写了一个.emacs文件让我按F5).然后STk打开了.我可以在STk中加载我的方案文件.但它会让我回到麻省理工学院计划与edwin.
我想在Racket(Write/REPL)中使用相同的东西.但关键运动更具灵活性.在Racket中你没有Cf Cn Ca ......等等.
谁能教我怎么做?
我是否编译一个Racket程序似乎对运行时性能没有任何影响.
最初是通过编译改进了文件的加载吗?换句话说,运行时racket src.rkt是否正在进行jit编译,这就是为什么我认为编译与交互没有区别?
即使对于整数运算的紧密循环,我认为会发生一些差异,无论我以前是否做过,配置文件时间都相等raco make.
我错过了一些简单的事吗?
PS,我注意到我可以对源文件(.rkt)或.zo文件运行racket .球拍是否会自动使用.zo找到与.rkt文件对应的if ,或者是否.zo需要明确使用该文件?无论哪种方式,它对我所看到的性能数字没有任何影响.
我一直试图从命令行发起一个球拍程序(通过'球拍'),但没有取得成功.根据文档(这里http://docs.racket-lang.org/reference/running-sa.html#%28part._mz-cmdline%29)传递-f后跟文件应该评估该文件.但是,我似乎无法让这个工作.作为测试,我做了以下文件:
;test.rkt
#lang racket
(define a 1)
Run Code Online (Sandbox Code Playgroud)
然后,在球拍中运行它(据说加载文件)并尝试调用a的值:
racket -f test.rkt -i
Welcome to Racket v5.1.1.
> a
reference to undefined identifier: a
Run Code Online (Sandbox Code Playgroud)
我的最终目标是能够从shell脚本启动一个不同的程序,使用--main选项加载定义-f以启动执行,只是有点困惑,因为我似乎无法让这个微不足道的工作.
我猜测#lang球拍是一种方案的方言,具有更多的开箱结构和常用功能,也许更具教学意义.#lang对#lang方案有什么好处?
在球拍中使用#lang方案是否最好(甚至可能)遵循"计算机程序的结构和解释"甚至"如何设计程序"的所有内容.HtDP是#lang球拍特有的吗?
无论用#lang方案编写什么代码,只要不包含库,就可以在鸡计划或任何主要解释器中使用?
提前致谢.
我开始阅读Little Schemer了,而不是PLT Scheme,我们有Racket.我想知道Racket是否适合在本书中进行练习,或者我是否需要获得另一个真正的Scheme编译器.在我忘了告诉你之前,我的操作系统是Windows x64.
书,语言和范例足够复杂,我希望避免与编译器挣扎.
非常感谢提前.