标签: racket

Racket与Scheme有何不同?

Racket是Scheme的后代.Racket与R6RS有何不同?它添加或带走了什么,或者只是不同?

据我所知,Racket不仅仅是一种语言,它还是一种语言平台.但我指的是主要的球拍方言.

lisp scheme racket

174
推荐指数
6
解决办法
5万
查看次数

Clojure,Scheme/Racket和Common Lisp有什么区别?

我知道他们是同一个语言家族的方言,称为lisp,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题.

lisp scheme clojure common-lisp racket

112
推荐指数
3
解决办法
3万
查看次数

OS X的最佳Scheme或LISP实现是什么?

我正在寻找一个Scheme或甚至LISP的版本,我可以用它来恢复一些失去的Lisp开发技巧.一些Web功能会很好,但不是必需的.

我看过Plt和MIT方案,虽然两者看起来都不错,但Plt看起来更加丰富.我也看了Lisp实现,但所有看起来都很昂贵.

我赞成免费/廉价的实现,因为这可能只是偶尔的业余爱好编程.你有什么建议?

lisp macos scheme racket

85
推荐指数
6
解决办法
3万
查看次数

Scheme和Common Lisp之间有什么实际区别?(或任何其他两种Lisp方言)

注意:我不是在问哪个学习,哪个更好,或者类似的东西.

我拿起SICP的免费版本,因为我觉得阅读会很好(我听说过很好的东西,而且我对这种编程方面很感兴趣).

我知道Scheme是Lisp的一种方言,我想知道:Scheme和Common Lisp之间的实际区别是什么?

似乎有很多关于'CL有一个更大的stdlib ...方案对现实世界的编程不好......'但实际上并没有说'这是因为CL就是这个/有这个'.

lisp scheme common-lisp sicp racket

71
推荐指数
3
解决办法
2万
查看次数

使用宏收集优秀的应用程序和程序

我对Macros非常感兴趣,刚刚开始了解它的真正力量.请帮我收集宏系统的一些很好的用法.

到目前为止,我有这些结构:

模式匹配:

安德鲁赖特和布鲁斯杜巴.Scheme的模式匹配,1995

Prolog精神的关系:

Dorai Sitaram.在schelog中编程. http://www.ccs.neu.edu/home/dorai/schelog/schelog.html

Daniel P. Friedman,William E. Byrd和Oleg Kiselyov.理性的计划者.麻省理工学院出版社,2005年7月

Matthias Felleisen.将Prolog音译为方案.技术报告182,印第安纳大学,1985年.

可扩展循环结构:

塞巴斯蒂安·埃格纳 方案中的热切理解:SRFI-42的设计."计划与功能规划研讨会",2005年9月第13-26页.

奥林颤抖.循环的解剖:范围和控制的故事.在国际功能规划会议,第2-14页,2005年.

班级系统:

PLT.PLT MzLib:图书馆手册.技术报告PLT-TR2006-4-v352,PLT方案公司,2006年 http://www.plt-scheme.org/techreports/

Eli Barzilay.骗取. http://www.barzilay.org/Swindle.

组件系统:

Ryan Culpepper,Scott Owens和Matthew Flatt.组件接口中的语法抽象.在生成编程和组件工程国际会议,第373-388页,2005年

软件合同检查

Matthew Flatt和Matthias Felleisen.单位:用于HOT语言的酷模块在ACM SIGPLAN会议上编程语言设计和实现,第236-248页,1998年

Oscar Waddell和R. Kent Dybvig.扩展句法抽象的范围.在编程语言原理研讨会上,第203-215页,第199页

解析器生成器

Scott Owens,Matthew Flatt,Olin Shivers和Benjamin McMullan.Scheme中的Lexer和解析器生成器.关于计划和功能规划研讨会,2004年9月第41-52页.

工程语义工具:

Matthias Felleisen,Robert Bruce Findler和Matthew Flatt.PLT Redex的语义工程.MIT出版社,2009年8月.

编译器转换的规范:

Dipanwita Sarkar,Oscar Waddell和R. Kent Dybvig.用于编译器教育的纳米框架.功能规划期刊,15(5):653-667,2005年9月.教育明珠.

新的执行形式

具有可序列化延续的Servlet Greg Pettyjohn,John Clements,Joe Marshall,Shriram Krishnamurthi和Matthias Felleisen.广义堆栈检查的延续.在国际功能规划会议上,第216-227页,2005年.

定理证明系统

塞巴斯蒂安·埃格纳 方案中的热切理解:SRFI-42的设计.在计划与功能规划研讨会上,2005年9月第13-26页.

基类的扩展与类型

Sam Tobin-Hochstadt和Matthias Felleisen.打字方案的设计和实施.在编程语言原理研讨会上,第395-406页,2008年.

怠惰

Eli Barzilay和John Clements.没有辛勤工作的懒惰:将懒惰和严格的语言结合起来进行教学.在教育中的功能和声明性编程中,第9-13页,2005年. …

lisp macros scheme hygiene racket

57
推荐指数
2
解决办法
2633
查看次数

为什么在Racket中以奇怪的方式定义foldl?

在Haskell中,与许多其他函数语言一样,函数foldl被定义为例如foldl (-) 0 [1,2,3,4] = -10.

这没关系,因为foldl (-) 0 [1, 2,3,4]根据定义,((((0 - 1) - 2) - 3) - 4).

但是,在Racket中,(foldl - 0 '(1 2 3 4))是2,因为Racket"智能地"计算如下:(4 - (3 - (2 - (1 - 0)))),确实是2.

当然,如果我们定义辅助功能翻转,像这样:

(define (flip bin-fn)
  (lambda (x y)
    (bin-fn y x)))
Run Code Online (Sandbox Code Playgroud)

然后我们可以在Racket中实现与Haskell相同的行为:而不是(foldl - 0 '(1 2 3 4))我们可以写:(foldl (flip -) 0 '(1 2 3 4))

问题是:为什么foldl球拍以这种奇怪的(非标准的,非直观的)方式定义,与其他语言不同?

recursion scheme functional-programming fold racket

44
推荐指数
4
解决办法
8345
查看次数

帮助理解Scheme中的Continuations

我和The Little Schemer一起工作,学习Scheme并在我的环境中使用PLT-Scheme.

Little Schemer对递归给了我很大的帮助(现在对我来说很简单)但是我仍然坚持介绍"收藏家"这本书的一部分,并将整个函数称为一个延续.

这是他们使用的示例代码.我理解递归元素但是我被卡住了,特别是在lambda函数上 - 我的思想不能遵循路径以及如何设置lambda函数的参数(因为他们唯一的调用是在递归中再次调用它们,有功能体内没有具体用途).

如果有人能够或多或少地通过将函数递归到lambda收集器来分解计算路径,那可能对我有所帮助.

;; Build a nested list of even numbers by removing the odd ones from its
;; argument and simultaneously multiply the even numbers and sum the odd
;; numbers that occur in its argument.
(define (even-only-collector l col)
  (cond
    ((null? l)
      (col (quote ()) 1 0))
    ((atom? (car l))
      (cond
        ((even? (car l))
          (even-only-collector (cdr l)
            (lambda (newl p s)
              (col (cons (car l) newl)
                (* (car l) …
Run Code Online (Sandbox Code Playgroud)

lisp scheme continuations the-little-schemer racket

43
推荐指数
1
解决办法
3087
查看次数

什么是lisp/scheme中的符号?

为了全能的爱,我还没有理解符号的目的'iamasymbol.我理解数字,布尔值,字符串...变量.但是符号对于我的小思维思维来说太过分了.我究竟用它做什么用的?它们应该如何在程序中使用?我对这个概念的把握只是失败了.

lisp scheme racket

38
推荐指数
5
解决办法
2万
查看次数

引号和列表有什么区别?

我知道你可以使用'(aka quote)创建一个列表,我一直都在使用它,如下所示:

> (car '(1 2 3))
1
Run Code Online (Sandbox Code Playgroud)

但它并不总是像我期望的那样工作.例如,我试图创建一个函数列表,像这样,但它不起作用:

> (define math-fns '(+ - * /))
> (map (lambda (fn) (fn 1)) math-fns)
application: not a procedure;
  expected a procedure that can be applied to arguments
  given: '+
Run Code Online (Sandbox Code Playgroud)

当我使用时list,它的工作原理:

> (define math-fns (list + - * /))
> (map (lambda (fn) (fn 1)) math-fns)
'(1 -1 1 1)
Run Code Online (Sandbox Code Playgroud)

为什么?我认为'这只是一个方便的速记,为什么行为不同?

evaluation scheme racket quote

33
推荐指数
2
解决办法
8009
查看次数

Dret博士对SICP的问题

我正在通过SICP工作.目前,在第一章中,我遇到了让Racket重新定义"原语"的问题.例如,我的印象是我应该可以任意做(define + 5),这样就可以了,或重新定义sqrt程序.相反,我明白了:

define-values: cannot change constant variable: +
Run Code Online (Sandbox Code Playgroud)

我的语言目前设置为R5RS,我认为这样可以解决与SICP的兼容性问题.

lisp scheme sicp racket

30
推荐指数
3
解决办法
1万
查看次数