代码改变世界

随笔分类 -  fp_Lisp(scheme)

《how to design programs》9.3处理任意长度的表

2013-11-11 10:28 by youxin, 228 阅读, 收藏, 编辑
摘要: 假定一个玩具商店要把货物库存清单存放在计算机之中,这样,店里的员工就可以快速判断商店里是否还有某种玩具存货。简言之,商店需要一个能够检查库存是否含有玩具'doll 的函数contains-doll?,翻译成Scheme 的术语就是,判断符号表中是否存在值为'doll 的元素。有了函数 contains-doll?输入数据的定义,接着就要给出函数合约、头部和用途说明:;; contains-doll? : list-of-symbols -> boolean;; 判断符号'doll 是否存在于a-list-of-symbols 之中(define (contains 阅读全文

let区别(关于racket和r5rs)

2013-11-11 08:48 by youxin, 817 阅读, 收藏, 编辑
摘要: R5RS is theRevised5Report on the Algorithmic Language Scheme.参考http://www.schemers.org/Documents/Standards/R5RS/。racket let 用法:(let([idval-expr]...)body...+)(letproc-id([idinit-expr]...)body...+)The first form evaluates theval-exprs left-to-right, creates a newlocationfor eachid, and places the valu 阅读全文

静态作用域与动态作用域

2013-11-10 12:06 by youxin, 2658 阅读, 收藏, 编辑
摘要: 看一个问题http://www.zhihu.com/question/20032419词法域是否等同静态作用域?问题来源:《Scheme 程序语言介绍》(http://www.ibm.com/developerworks/cn/linux/l-scheme/part2/)中「一是把 Lisp 从 Dynamic scope 变成了 Lexical scope」词法作用域(lexical scope)等同于静态作用域(static scope)。所谓的词法作用域其实是指作用域在词法解析阶段既确定了,不会改变。我们要知道js是遵循静态作用域的。举个例子:var foo=1;function sta 阅读全文

转:函数式编程初探

2013-10-22 16:41 by youxin, 254 阅读, 收藏, 编辑
摘要: 诞生50多年之后,函数式编程(functional programming)开始获得越来越多的关注。不仅最古老的函数式语言Lisp重获青春,而且新的函数式语言层出不穷,比如Erlang、clojure、Scala、F#等等。目前最当红的Python、Ruby、Javascript,对函数式编程的支持都很强,就连老牌的面向对象的Java、面向过程的PHP,都忙不迭地加入对匿名函数的支持。越来越多的迹象表明,函数式编程已经不再是学术界的最爱,开始大踏步地在业界投入实用。也许继"面向对象编程"之后,"函数式编程"会成为下一个编程的主流范式(paradigm)。 阅读全文

scheme学习资料

2013-03-21 21:15 by youxin, 1863 阅读, 收藏, 编辑
摘要: 最近在看《计算机程序的构造和解释》(SICP),为了顺利看完该书,免不得要学一学Scheme,先找了一些资料,以作后用。SICP官方HTML版ePub版PDF版mobi/kindle版习题解(SICP-Solutions)SICP-Solutions(schemewiki.org)SICP solutions(drewhess.com)Scheme语言入门Scheme入门.pdfScheme语言入门推荐Racket作为入门的开发环境from:http://ioio.name/scheme-guide.html另一篇:Scheme的社会是非常开放和自由的。所以你不用奇怪,最好的书 都有免费的版本 阅读全文

scheme开发环境

2013-03-21 12:34 by youxin, 2443 阅读, 收藏, 编辑
摘要: Racket 是一个Scheme语言平台,支持R5RS和R6RS标准Scheme语言,以及各种Scheme语言变体(大部分通过元编程的方式)。搭配了完整的库程序和开发工具,非常容易上手。下载地址:http://racket-lang.org/racket是scheme的一种实现。几个免费的Scheme(Lisp)解释器:(转)Lisp 是一个古老的函数式编程语言,Scheme则起源于MIT的一种Lisp方言。当前编程语言的一些特性,如尾递归、匿名函数、动态改变代码的功能等等,不 少是受到了Lisp的启发。这里介绍几个能在Windows下使用的免费Scheme语言或Lisp语言的环境。Racke 阅读全文

Lisp简介

2013-03-21 12:27 by youxin, 1057 阅读, 收藏, 编辑
摘要: 原文地址:http://www.paulgraham.com/lispfaq1.html何为Lisp?Lisp是一类程序设计语言的名称,它由1950年末John McCarthy发明(更确切地说是发现)的一种语言演化而来。目前Lisp的两种主要方言分别是Common Lisp和Scheme。我们正在致力于一种新方言Arc的开发。如何学习Lisp?学习任何语言的方法都是使用它来编写程序。您有两种主要方言可选:Scheme和Common Lisp。尽管它们各有优点和缺点,但是倘若拿Lisp与其他编程语言之间的差距相比,它们之间的差别就微乎其微了。所以如果您想要开始学习Lisp,选择其中任何一种都可 阅读全文