ログイン
編集不可のページディスカッション情報添付ファイル

2012-07-27 23:46:18時点のリビジョン3

メッセージを消す
alstamber/FunctionalLanguageAndLogicalLanguage

MMA

なにこれ

LISP

関数型言語ってそもそも何

C言語にも関数あるじゃん

関数型言語の関数はいろいろすごい

それができて何が嬉しいの?

副作用って何

副作用は悪

副作用がないとどういう変化が起きるのか

LISPって何

LISPの構文要素

リスト構造

S式

式の評価

式の評価の例

もうちょっと複雑な式の評価

   1   (+ 1 3)

   1   (+ (* 1 3) (* 2 -4))

   1   (+ 1 1)
   2   (1 2 3)

評価の順番

   1   (+ (* 1 3) 3)

   1   (+ 3 3) ;(* 1 3)を評価した

   1   6 ;(+ 3 3)を評価した

number?

   1   (number? (* 12 (+ 8901 -11)))
   2   (number? '(* 12 (+ 8901 11)))

関数を自分で作りたい

   1   (define (関数名 関数の引数) 関数の中身のS式)

   1   (define (square x) (* x x))

変数を''束縛''する

局所変数とlet

   1   (let (束縛したい変数とその値のリスト) 束縛した後に評価させたい式)

   1   (let ((x 1)) x) ; xを1で束縛したあとxを評価

   1   (let ((x 1) (y 2)) x) ; xを1で束縛すると同時にyを2で束縛した、そのあとxを評価

大域変数とdefine

   1   (define hoge 0)

大域変数と局所変数の違いをみる

   1   (define hoge 0) ;大域変数hogeを0で束縛
   2   (let ((hoge 1) (y hoge)) y) ; hogeを1で束縛すると同時にyをhogeで束縛した、そのあとyを評価
   3   hoge ;hogeを評価

   1 0

   1 0

Prolog