ProgrammingのTipなど

リスト

数字、文字列を扱えるデータの集合です

car で先頭の一つを得る
cdr で先頭以外の残り全体のリストを得る
cons でペア・リストを作る

Schemeではリストに対して何らかの繰り返し処理を扱うには
高階関数を使うか再帰を使うのが一般的です

リストはペアでできたデータ構造を連結したもので
(データ 次のリストへのポインタ)
というペアをつなげて再帰的なデータ構造をしています
リスト作成
(list num1 num2 ...)
listの後に要素を並べることでリストを作成します
listの代わりに ' クオートを使うこともできます
(define ar1 (list 1 2 3 7 8 9))
(define ar2 '(10 5 8 9 5))
空リスト作成
(quote ())
car
リストの最初の要素をとる
読み方はカー
(car リスト)

(define ar2 '(10 5 8 9 5))
(print
(car ar2))
>>10
cdr
リストの最初以外の残りの要素を取り出す
読み方はクダー
(cdr リスト)

(define ar2 '(10 5 8 9 5))
(print 
(cdr ar2))
>>(5 8 9 5)
cons
2つの引数から新しいペアかリストを作成する
引数が2つともアトムだとペアが作られる
リストを作るには
第1引数はアトムかリストを指定
第2引数は必ずリストでなければならない
読み方はコンス
(cons 第一引数 第2引数)
数字を加える
(cons 1 '(2 3)) 
>>'(1 2 3)
第2引数がリストの場合
常に第1引数を第2引数のリストの先頭に付け加える形になることに注意
(cons '(1 2) '(3 5 7)) 
>>'((1 2) 3 5 7)
length
lengthはリストの長さを返します
(length リスト)
ar2というリストの長さを返す例
(define ar2 '(10 5 8 9 5))
(length ar2)
>>5
range
rangeはaの数からn-1までの数のリストを作成します
(range a n)
(range 1 8)
>>'(1 2 3 4 5 6 7)
append
appendは2つのリストを合わせたリストを作成します
(append リスト1 リスト2)
(define ar1 '(1 2 5))
(define ar2 '(6 7))
(append ar1 ar2)
>>'(1 2 5 6 7)
reverse
リストの要素を逆順にしたリストを作成します
(reverse リスト)
(define ar1 '(1 2 5))
(reverse ar1)
>>'(5 2 1)
null?
(null? x)
対象が空リストかどうか判定します
(define ar1 '(1 2 5))
(null? ar1)
>>#f
list-ref
(list-ref リスト n)
n+1番目の要素を返します
nは0から始まるので注意
(define ar6 (list 1 2 3 7 8 9))
(list-ref ar6 0)
>>1
(list-ref ar6 2)
>>3
remove
リストからある項を取り除く関数
(remove 項 リスト)
(define l1 '(1 2 3 4 5 6))
(print (remove 3 l1))
>'(1 2 4 5 6)
member
ある項がリスト内にあるかどうか判定する
なければ#fを返し
あればその項と(cdr list)のリストを返す
(member x list)

非組込関数

組み込み関数ではないがよく使われて便利な関数や
組み込み関数の実装例を紹介
atomかどうかの判定関数
リストであるかないかの判定に使える
(define atom?
  (lambda (x)
    (and (not (pair? x)) (not (null? x)))
    )
  )
removeの実装例
リストからあるアトムを取り除く関数の例
(define removex
  (lambda (x l)
    (cond
      ((null? l) (quote ()))
      ((eq? x (car l)) (cdr l))
      (else
       (cons (car l) (removex x (cdr l))))
      )
    )
  )

(define l1 '(1 2 3 4 5 6))
(print (removex 3 l1))

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人/副管理人のみ編集できます