其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·前两天看到的#pragma用法
·用C写的简单学生成绩管理系统
·射频芯片nRF401天线设计的分析
·入门系列--OpenGL最简单的入门
·简单的CreateRemoteThread例程-初学者必看
·BCB数据库图像保存技术
·GNU中的Makefile
·使用AutoMake轻松生成Makefile
·数据结构

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
sicp习题试解 (2.6)

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

; ======================================================================
;
; Structure and Interpretation of Computer Programs
; (trial answer to excercises)
;
; 计算机程序的构造和解释(习题试解)
;
; created: code17 04/23/05
; modified:
; (保持内容完整不变前提下,可以任意转载)
; ======================================================================


;; SICP No.2.6

;; 定义1
;; one = add-1 zero
;; = (lambda (f) (lambda (x) (f ((zero f) x))))
;; = (lambda (f) (lambda (x) (f x)))
(define one (lambda (f) (lambda (x) (f x))))

;; 定义2
;; 同理 two = add-1 one 可得
(define two (lambda (f) (lambda (x) (f (f x)))))

;; 由替代过程推理可得公式
;; (define n-th (lambda (f) (lambda (x) (f^n x))))

;; add 可直接定义为
(define (add a b)
(lambda (f) (lambda (x) ((b f) ((a f) x)))))

;; 另外,为了便于检查定义的正确性,我们定义了一对转换函数,
;; 进行普通数和Church数之间的转换输出

(define (cn-to-n cn) ((cn (lambda (i) (+ i 1))) 0))
(define (n-to-cn n)
(if (= n 0)
(lambda (f) (lambda (x) x))
(add-1 (n-to-cn (- n 1)))))


;; Test-it:
;; Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc.
;; > one
;; #<procedure:one>
;; > two
;; #<procedure:two>
;; > (cn-to-n one)
;; 1
;; > (cn-to-n two)
;; 2
;; > (define five (add-1 (add-1 (add-1 two))))
;; > (cn-to-n five)
;; 5
;; > (define seven (n-to-cn 7))
;; > (cn-to-n seven)
;; 7
;; > (define twelve (add five seven))
;; > (cn-to-n twelve)
;; 12



相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有