版本7和19间的区别 (跳过第12版)
于2007-04-16 10:00:59修订的的版本7
大小: 2655
编辑: czk
备注:
于2008-02-23 15:35:42修订的的版本19
大小: 629
编辑: localhost
备注: converted to 1.6 markup
删除的内容标记成这样。 加入的内容标记成这样。
行号 1: 行号 1:
[[TableOfContents]] [[http://mitpress.mit.edu/sicp/full-text/book/book.html|Structure and Interpretation of Computer Programs, 2nd Edition]]这本书中的Lisp代码用Python语言重新实现后写在这里,主要目的是供使用Python的人学习函数式编程作参考。
行号 3: 行号 4:
== The Elements of Programming ==
=== Expressions ===
 1. {{{
486
}}}{{{#!python
486
}}}

 1. {{{
(+ 137 349)
486
(- 1000 334)
666
(* 5 99)
495
(/ 10 5)
2
(+ 2.7 10)
12.7
}}}{{{#!python
137 + 349
1000 - 334
5 * 99
10 / 5
2.7 + 10
}}}

 1. {{{
(+ 21 35 12 7)
75

(* 25 4 12)
1200
}}}{{{#!python
21 + 35 + 12 + 7
25 * 4 * 12
}}}或者{{{
reduce(int.__add__, [21, 35, 12, 7])
reduce(int.__mul__, [25, 4, 12])
}}}
 1. {{{
(+ (* 3 5) (- 10 6))
19
}}}{{{#!python
(3 * 5) + (10 - 6)
}}}
 1. {{{
(+ (* 3
      (+ (* 2 4)
         (+ 3 5)))
   (+ (- 10 7)
      6))
}}}{{{#!python
(3 * ((2*4)+(3+5)) ) + ((10-7)+6)
}}}
=== Naming and the Environment ===
 1. {{{
(define size 2)
}}}{{{#!python
size = 2
}}}
 1. {{{
size
2
(* 5 size)
10
}}}{{{#!python
size
5 * size
}}}
 1. {{{
(define pi 3.14159)
(define radius 10)
(* pi (* radius radius))
314.159
(define circumference (* 2 pi radius))
circumference
62.8318
}}}{{{#!python
pi = 3.14159
radius = 10
pi * (radius * radius)
circumference = 2 * pi * radius
circumference
}}}

=== Evaluating Combinations ===
 1. {{{
(* (+ 2 (* 4 6))
   (+ 3 5 7))
}}}{{{#!python
(2+(4*6)) * (3+5+7)
}}}

=== Compound Procedures ===
 1. {{{
(define (square x) (* x x))
}}}{{{#!python
square = lambda x: x*x
}}}
 1. {{{
(square 21)
441

(square (+ 2 5))
49

(square (square 3))
81
}}}{{{#!python
square(21)
square(2+5)
square(square(3))
}}}
 1. {{{
(define (sum-of-squares x y)
  (+ (square x) (square y)))

(sum-of-squares 3 4)
25
}}}{{{#!python
sum_of_squares = lambda x, y: square(x) + square(y)
sum_of_squares(3, 4)
}}}
 1. {{{
(define (f a)
  (sum-of-squares (+ a 1) (* a 2)))

(f 5)
136
}}}{{{#!python
f = lambda a:sum_of_squares(a+1, a*2)
f(5)
}}}
=== The Substitution Model for Procedure Application ===

=== Conditional Expressions and Predicates ===

=== Example: Square Roots by Newton's Method ===

=== Procedures as Black-Box Abstractions ===

== Procedures and the Processes They Generate ==
            1.2.1 Linear Recursion and Iteration
            1.2.2 Tree Recursion
            1.2.3 Orders of Growth
            1.2.4 Exponentiation
            1.2.5 Greatest Common Divisors
            1.2.6 Example: Testing for Primality
        1.3 Formulating Abstractions with Higher-Order Procedures
            1.3.1 Procedures as Arguments
            1.3.2 Constructing Procedures Using Lambda
            1.3.3 Procedures as General Methods
            1.3.4 Procedures as Returned Values
<<Include(/SICP的Python实现1.1,,titlesonly, editlink)>>
<<Include(/SICP的Python实现1.2,,titlesonly, editlink)>>
<<Include(/SICP的Python实现1.3,,titlesonly, editlink)>>
= Building Abstractions with Data =
= Modularity, Objects, and State =
= Metalinguistic Abstraction =
= Computing with Register Machines =

SICP的Python实现 (2008-02-23 15:35:42由localhost编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.