This commit is contained in:
lyuehh 2013-08-12 23:02:44 +08:00
parent 46ce57a23c
commit 73e700e013

View File

@ -11,7 +11,7 @@ translators:
---
Racket是Lisp/Scheme家族中的一个通用的多范式的编程语言。
非常期待您的反馈!你可以通过[@th3rac25](http://twitter.com/th3rac25)或以用户名为th3rac25的Google游戏爱你过服务
非常期待您的反馈!你可以通过[@th3rac25](http://twitter.com/th3rac25)或以用户名为 th3rac25 的Google邮箱服务和我取得联系
```racket
#lang racket ; 声明我们使用的语言
@ -125,7 +125,7 @@ my-pet ; => #<dog>
(dog-name my-pet) ; => "lassie"
;;; 对 (不可变的)
;; `cons' 函数返回对, `car' 和 `cdr' 从对中提取第1个
;; `cons' 返回对, `car' 和 `cdr' 从对中提取第1个
;; 和第2个元素
(cons 1 2) ; => '(1 . 2)
(car (cons 1 2)) ; => 1
@ -133,7 +133,7 @@ my-pet ; => #<dog>
;;; 列表
;; 列表由链表构成, 由 `cons' 函数的结果
;; 列表由链表构成, 由 `cons' 的结果
;; 和一个 `null' (或者 '()) 构成,后者标记了这个列表的结束
(cons 1 (cons 2 (cons 3 null))) ; => '(1 2 3)
;; `list' 给列表提供了一个非常方便的可变参数的生成器
@ -141,7 +141,7 @@ my-pet ; => #<dog>
;; 一个单引号也可以用来表示一个列表字面量
'(1 2 3) ; => '(1 2 3)
;; 仍然可以使用 `cons' 函数在列表的开始处添加一项
;; 仍然可以使用 `cons' 在列表的开始处添加一项
(cons 4 '(1 2 3)) ; => '(4 1 2 3)
;; `append' 函数可以将两个列表合并
@ -169,14 +169,14 @@ my-pet ; => #<dog>
;; 从一个列表创建一个Set
(list->set '(1 2 3 1 2 3 3 2 1 3 2 1)) ; => (set 1 2 3)
;; 使用 `set-add' 函数增加一个成员
;; 使用 `set-add' 增加一个成员
;; (函数式特性: 这里会返回一个扩展后的Set而不是修改输入的值)
(set-add (set 1 2 3) 4) ; => (set 1 2 3 4)
;; 使用 `set-remove' 函数移除一个成员
;; 使用 `set-remove' 移除一个成员
(set-remove (set 1 2 3) 1) ; => (set 2 3)
;; 使用 `set-member?' 函数测试成员是否存在
;; 使用 `set-member?' 测试成员是否存在
(set-member? (set 1 2 3) 1) ; => #t
(set-member? (set 1 2 3) 4) ; => #f
@ -194,15 +194,15 @@ my-pet ; => #<dog>
;; 你可以给不存在的键提供一个默认值
(hash-ref m 'd 0) ; => 0
;; 使用 `hash-set' 函数来扩展一个不可变的散列表
;; 使用 `hash-set' 来扩展一个不可变的散列表
;; (返回的是扩展后的散列表而不是修改它)
(define m2 (hash-set m 'd 4))
m2 ; => '#hash((b . 2) (a . 1) (d . 4) (c . 3))
;; 记住,使用 `hash` 函数创建的散列表是不可变的
;; 记住,使用 `hash` 创建的散列表是不可变的
m ; => '#hash((b . 2) (a . 1) (c . 3)) <-- no `d'
;; 使用 `hash-remove' 函数移除一个键值对 (函数式特性m并不变)
;; 使用 `hash-remove' 移除一个键值对 (函数式特性m并不变)
(hash-remove m 'a) ; => '#hash((b . 2) (c . 3))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@ -437,7 +437,7 @@ m ; => '#hash((b . 2) (a . 1) (c . 3)) <-- no `d'
(set! n (add1 n))
n ; => 6
;; 给那些明确需要变化的值使用 `boxes` (在其他语言里类似指针
;; 给那些明确需要变化的值使用 `boxes` (在其他语言里类似指针
;; 或者引用)
(define n* (box 5))
(set-box! n* (add1 (unbox n*)))