defineを使いグローバル変数を定義します
グローバル変数とは同一ソースのプログラムのどこからでもアクセスできる変数のことです
(ちなみにSchemeではdefineで関数の定義もできます)
グローバル変数とは同一ソースのプログラムのどこからでもアクセスできる変数のことです
(ちなみにSchemeではdefineで関数の定義もできます)
(define 変数名 値)で変数宣言とともに束縛(代入)します
(define x1 100909)
C++やPythonなどの多くの手続き型言語と違い
Schemeのような関数型言語の考え方は
一度束縛(代入)した変数の値は基本的に変えるべきではないとしています
しかしschemeではset!を使うことで例外的に
変数の値を再定義して変更することができます
注意:関数型言語では一般に
値が途中で変わることを副作用と言い
関数型言語ではこれを防ぐことでプログラムが堅牢になると考えられています
なので関数型言語の考え方に従ったプログラミングをするならば
set!を使うのはやむを得ない場合だけにし
慎重にしておいたほうが良いでしょう
Schemeのような関数型言語の考え方は
一度束縛(代入)した変数の値は基本的に変えるべきではないとしています
しかしschemeではset!を使うことで例外的に
変数の値を再定義して変更することができます
(set! x1 555) >>555
注意:関数型言語では一般に
値が途中で変わることを副作用と言い
関数型言語ではこれを防ぐことでプログラムが堅牢になると考えられています
なので関数型言語の考え方に従ったプログラミングをするならば
set!を使うのはやむを得ない場合だけにし
慎重にしておいたほうが良いでしょう
(let )文内だけで使える局所変数
変数が1個の場合
a1やa2に(let )文の外から使おうとするとエラーになることに注意
変数が1個の場合
(let ((変数名 値)) 命令)変数が複数の場合
(let ((変数名 値)(変数名 値)) 命令)a1に5を代入しa2に2を代入してからa1+a2を表示する文
a1やa2に(let )文の外から使おうとするとエラーになることに注意
(let ((a1 5)(a2 2)) (display (+ a1 a2)) ) >>7 ;let文の外でこれをやるとエラーになる (+ a1 a2)
letは何重にもネストさせて書くことができます
xに2yに5を代入し
2*5=10をzに代入してからzに7をかける文
xに2yに5を代入し
2*5=10をzに代入してからzに7をかける文
(let ((x 2) (y 5)) (let ((z (* x y))) (* z 7)) ) >>70
通常S式に使われるカッコは()ですが
[]も()と同じものとして使えます
特にlet文では()カッコが多重になりやすいので[]も慣習的に使われることが多いです
[]も()と同じものとして使えます
特にlet文では()カッコが多重になりやすいので[]も慣習的に使われることが多いです
(let ([a1 5][a2 2]) (display (+ a1 a2)) )
コメントをかく