🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## lisp 语言最重要的特征 计算过程的Lisp描述(称为**过程**)本身又可以作为Lisp的**数据**来表示和操作。 这一事实的重要性在于,现存的许多威力强大的程序设计技术,都依赖于填平在“被动的”数据和“主动的”过程之间的传统划分。 ``` ;; D 为数据 ;; D -> 2 (define D (+ 1 1)) ;; (D) 为过程 ;; (D) -> 2 (define (D) (+ 1 1)) ``` ## 程序设计的基本元素 - 基本表达形式 - 用于表示语言所关心的最简单的个体。 - 组合的方法 - 通过它们可以从较简单的东西出发构造出复合的元素。 - 抽象的方法 - 通过它们可以为复合对象命名,并将它们当作单元去操作。 ## 示例 ### 实现一个求平方根 <details> <summary>main.rkt</summary> ``` #lang racket (define (abs x) (cond ((< x 0) (- x)) ((= x 0) 0) ((> x 0) x) )) (define (square x) (* x x) ) (define (average x y) (/ (+ x y) 2) ) ;; ;; (improve guess x) (define (improve guess x) (average guess (/ x guess))) ;; (good-enough? 1.41412 2) -> #t (define (good-enough? guess x) (< ( abs (- (square guess) x)) 0.01) ) ;; (try 1 2) -> 1 5/12 (define (try guess x) (if (good-enough? guess x) guess (try (improve guess x) x) ) ) (try 1 2) ``` </details> <br />