| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
92 バイト追加 、 2020年2月15日 (土) 08:05
編集の要約なし
==Scheme==
[[Racket]]
{{amazon|489471163X}}
*http://mitpress.mit.edu/sicp/
*式(expression)を入力すると解釈系は応答してその式を評価した(evaluating)結果を表示する
=====整数を与えると、応答を印字=====
> > 486
486
=====手続き(+や*など)と組み合わせて合成式とし、手続きの作用を表現=====
> > (+ 137 349)
486
> > (* 5 99)
495
====組合せ、演算子、被演算子、引数====
=====利点=====
*任意の引数をとる手続きを許す
> > (+ 21 35 12 7)
75
*組合せを入れ子にする(nested)ことを許す
> > (+ (* 3 5) (- 10 6))
19
*オブジェクトを値(value)とする変数(variable)を識別するのものが名前
*defineで名前付け
> > (define size 2) > > size
2
===組合せと評価===
=====二乗を表すsquare という合成手続き(compund procedure)を作る=====
> > (define (square x) (* x x)) > > (square 2)
4
===条件式と述語===
====場合分け(case analysis)====
*cond 場合分けを記述する特殊形式
> > (define (abs2 x) (cond ((> > x 0) x)
((= x 0) 0)
((< &lt; x 0) (- x)))) > &gt; (abs2 -19)
19
> &gt; (abs2 0)
0
*特殊記号 else を利用できる
> &gt; (define (abs3 x) (cond ((< &lt; x 0) (- x))
(else x)))
*場合分けが2つの場合、特殊形式の if を利用できる
> &gt; (define (abs4 x) (if (< &lt; x 0)
(- x)
x))
!論理合成演算
|-
|(and <&lt;e1> &gt; ... <&lt;en>&gt;)
|-
|(or <&lt;e1> &gt; ... <&lt;en>&gt;)
|-
|(not <&lt;e>&gt;)
|-
|}
(define (square x) (* x x))
(define (good-enough? guess x)
(< &lt; (abs (- (square guess) x)) 0.001))
(define (improve guess x)
(average guess (/ x guess)))
(define (average a b) (/ (+ a b) 2))
(define (good-enough? guess)
(< &lt; (abs (- (* guess guess) x)) 0.001))
(define (improve guess)
(average guess (/ x guess)))

案内メニュー