rkdora's Blog

Schemeはじめてみた #2

Schemeはじめてみた - エンジニアになりたい学生の備忘録の続き

計算

累乗

(expt 2 3) ;2の3乗
> 8

割る

(/ 5 2)
> 5/2

;商
(quotient 5 2)
> 2

;余り
(remainder 5 2)
> 1
(modulo 5 2)
> 1

定義

関数

(define add
  (lambda (x y)
    (+ x y)))

変数

(define num 10)
(define lat '(a b c))

num
> 10
lat
> '(a b c)

ローカル変数

(let ((x 0) (y 1)) (+ x y))
-> 1

高階関数

関数を引数に取る関数

map

各要素に仕事をする

(map add1 '(1 2 3))
-> '(2 3 4)

apply

リストの先頭に関数を入れるイメージ

(apply + '(1 2 3))
-> 6

filter

文字通り、フィルタリングする

(filter positive? '(-1 2 4 -5))
-> '(2 4)