2008/12/24

【scheme】schemeのlambdaラムダλ

日本語がカオスだ。
Schemeのlambda

;平方する関数「square」
(define square
  (lambda (n)
  (* n n)))
(square 5);=> 25

;squareの実行をlambdaで包んで別名をつけてみる
(define f
  (lambda (n)
  (square n)))
(f 5);=> 5

;squareという名前が付いていた中身をsquareと置き換える
(define f
  (lambda (n)
    ((lambda (n)
      (* n n)) n)))
(f 5);=>25

;fという名前が付いていた中身をfと置き換える
((lambda (n)
  ((lambda (n)
    (* n n)) n)) 
5);=> 25

;無駄なlambdaを排除
((lambda (n)
  (* n n)) 5);=> 25

;これと同じ
((lambda (n)
  (square n)) 5);=> 25

;これとも同じ
((lambda (n)
  (f n)) 5);=> 25

;これとも同じ
(square 5);=> 25

;これとも同じ
(f 5)
(* 5 5)
25

0 件のコメント:

コメントを投稿