gosh = interactive Gauche
fc9 [0] /root # gosh gosh> (define (add x y)(+ x y)) add gosh> (define (mul x y)(* x y)) mul gosh> (add 2 3) 5 gosh> (mul 2 3) 6 gosh> (define (calc f)(f 2 3)) ;関数を引数にとるcalcを定義 calc gosh> (calc add) ; 関数addを渡す => (add 2 3) 5 gosh> (calc mul) ; 関数mulを渡す => (mul 2 3) 6 gosh> (define (calc2 f)(f 9 7)) ;関数を引数にとるcalc2を定義 calc2 gosh> (calc2 add) 16 gosh> (calc2 mul) 63 gosh> (define (add x)(lambda (y)(+ x y))) ; xを引数として受け取り、関数を返す関数 addを定義 add gosh> (add 3) #<closure (add add)> gosh> ((add 3) 5) 8 gosh> ((add 15) 7) 22 gosh>