标签: racket

为什么Racket失去了单臂"if"?

标准Scheme中,可以编写

(if (> x 2)
    (set! x (- x 1)))
Run Code Online (Sandbox Code Playgroud)

但这在Racket中是不可能的 - Racket if总是需要两个手臂.为什么?

racket

29
推荐指数
1
解决办法
4849
查看次数

什么时候出现宏(用户定义的代码转换)?

我读过McCarthy 1960年关于LISP的论文,没有发现任何与用户定义的宏或正常的订单评估相似的内容.我想知道宏首次出现在编程语言历史中(以及Lisp历史中):

  • 什么时候首先描述(理论上)用户定义的代码转换(在解释或编译之前)?
  • 第一个使用类似Lisp的宏的编程语言实现是什么("Lisp-like"是指"使用可读的图灵完整语言进行代码转换")?(包括非Lisps - 例如Forth已经很老了,但我不确定第一个Forth实现是否已经"IMMEDIATE")
  • 其中哪一个是第一个高级编程语言(排除汇编语言......)
  • 拥有宏的第一个Lisp方言是什么?

谢谢!

lisp macros scheme history racket

27
推荐指数
3
解决办法
1742
查看次数

带VIM的编程方案(Racket) - 如何入门

最近,我开始在DrRacket中编写Racket(以前称为Scheme).我很快就开始错过DrRacket中VIM的所有功能,所以我想使用VIM进行我的方案(球拍)编程.

我知道Emacs可能是强烈的lisp编程的最佳选择,但我想要的只是编写一个scheme(racket)文件检查语法,然后运行它.

不幸的是,我无法弄清楚,如何在文件的命令行中调用"racket"以使其与DrRacket一样.

我正在运行Ubuntu 10.10 Maverick Meerkat,VIM 7.3,我从官方网站下载并安装了Racket.

帮助开始将非常感激.

lisp vim scheme racket

27
推荐指数
2
解决办法
1万
查看次数

究竟什么是"延续提示?"

我正在尝试破译文档

call-with-continuation-prompt

适用proc于给定的args,当前延续由提示扩展.提示标记为prompt-tag,必须是default-continuation-prompt-tag(默认)或的结果make-continuation-prompt-tag.结果proccall-with-continuation-prompt调用的结果.

我理解它所说的"适用procarg当前延续的给定s"的部分,然后它就是那里的乱码.

对于延续"延伸"甚至意味着什么,以及"提示"如何"延伸"?

scheme continuations racket delimited-continuations

24
推荐指数
1
解决办法
2057
查看次数

在Scheme中是否有等价于Lisp的"运行时"原语?

根据SICP第1.2.6节,练习1.22:

大多数Lisp实现包括一个名为runtime的原语,它返回一个整数,指定系统运行的时间(例如,以微秒为单位测量).

我正在使用DrScheme,运行时似乎不可用,所以我正在寻找一个好的替代品.我在PLT-Scheme Reference中发现有一个current-milliseconds原语.有谁知道Scheme中的计时器是否具有更好的分辨率?

lisp scheme sicp racket

23
推荐指数
2
解决办法
5746
查看次数

如何使用Emacs运行方案?

我按照本教程成功安装了Emacs,STk,Quack.

问题是如何加载我的程序,就像我在Racket中一样?

在Racket中,我可以在上方窗口中编辑我的代码,键入一些代码,保存并运行.然后下面的窗口将自动加载我刚写的代码.然后我可以玩它.

我试过Mx run-scheme.它只会让我进入类型mit方案.然后它说不存在这样的文件或目录.然后我尝试了F5(该网站的作者写了一个.emacs文件让我按F5).然后STk打开了.我可以在STk中加载我的方案文件.但它会让我回到麻省理工学院计划与edwin.

我想在Racket(Write/REPL)中使用相同的东西.但关键运动更具灵活性.在Racket中你没有Cf Cn Ca ......等等.

谁能教我怎么做?

emacs scheme racket

22
推荐指数
1
解决办法
2万
查看次数

Racket Interactive与编译性能

我是否编译一个Racket程序似乎对运行时性能没有任何影响.

最初是通过编译改进了文件的加载吗?换句话说,运行时racket src.rkt是否正在进行jit编译,这就是为什么我认为编译与交互没有区别?

即使对于整数运算的紧密循环,我认为会发生一些差异,无论我以前是否做过,配置文件时间都相等raco make.

我错过了一些简单的事吗?

PS,我注意到我可以对源文件(.rkt)或.zo文件运行racket .球拍是否会自动使用.zo找到与.rkt文件对应的if ,或者是否.zo需要明确使用该文件?无论哪种方式,它对我所看到的性能数字没有任何影响.

racket

22
推荐指数
2
解决办法
4101
查看次数

如何通过命令行将文件加载到球拍?

我一直试图从命令行发起一个球拍程序(通过'球拍'),但没有取得成功.根据文档(这里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以启动执行,只是有点困惑,因为我似乎无法让这个微不足道的工作.

scheme racket

21
推荐指数
2
解决办法
1万
查看次数

#lang方案和#lang球拍之间的差异

我猜测#lang球拍是一种方案的方言,具有更多的开箱结构和常用功能,也许更具教学意义.#lang对#lang方案有什么好处?

在球拍中使用#lang方案是否最好(甚至可能)遵循"计算机程序的结构和解释"甚至"如何设计程序"的所有内容.HtDP是#lang球拍特有的吗?

无论用#lang方案编写什么代码,只要不包含库,就可以在鸡计划或任何主要解释器中使用?

提前致谢.

scheme racket

21
推荐指数
1
解决办法
5562
查看次数

小Schemer和球拍

我开始阅读Little Schemer了,而不是PLT Scheme,我们有Racket.我想知道Racket是否适合在本书中进行练习,或者我是否需要获得另一个真正的Scheme编译器.在我忘了告诉你之前,我的操作系统是Windows x64.

书,语言和范例足够复杂,我希望避免与编译器挣扎.

非常感谢提前.

scheme the-little-schemer racket

20
推荐指数
3
解决办法
5309
查看次数