現在、なんの断りもなしにすぐ使えるよう提供されている関数。システム
load ――― モジュールの読み込みETC
int ――― 整数値への変換
str ――― 文字列への変換
time ――― C言語の timeI/O
clock ――― C言語の clock
srand ――― C言語の srand
rand ――― C言語の rand
open ――― ファイルを開く文字列
close ――― ファイルを閉じる
seek ――― ファイルの操作位置を移動する
tell ――― ファイルの操作位置を取得する
input ――― 標準入力、またはファイルから入力
print ――― 標準出力、またはファイルへの出力
gets ――― ファイルへの1行入力
puts ――― ファイルから1行出力
getc ――― ファイルへの1文字入力
putc ――― ファイルから1文字出力
read ――― ファイルから指定バイト数入力
write ――― ファイルへの指定バイト数出力
string ――― 文字列の作成正規表現
length ――― 文字列の長さの取得
index ――― 文字列の一致する位置の取得
substr ――― 部分文字列の取得
trim ――― 文字列の両側余白の切り落とし
upcase ――― 大文字に変換
downcase ――― 小文字に変換
chop ――― 1文字切り落とし
chomp ――― 文字列最後の改行の切り落とし
annex ――― 1文字付け足し
join ――― 文字列の連結
regex ――― 正規表現の作成配列
match ――― 正規表現で一致チェック
replace ――― 正規表現で一致した文字列を置換
scan ――― 正規表現で一致した文字を切り出す
split ――― 正規表現で一致した文字で切り分ける
array ――― 配列の作成リスト
push ――― 配列の末尾に要素を1つ付け足す
pop ――― 配列の末尾から要素を1つ切り取る
unshift ――― 配列の先頭に要素を1つ付け足す
shift ――― 配列の先頭から要素を1つ切り取る
splice ――― 配列の指定位置の要素を取り替える
reverse ――― 配列の要素を反転
list ――― リストの作成ハッシュ
cons ――― リストの先頭に要素を付け足す
car ――― リストの先頭の要素を取得
cdr ――― リストの先頭の要素を削除
concat ――― リストの連結
hash ――― ハッシュの作成
regist ――― ハッシュへの登録
lookup ――― ハッシュから検索
delete ――― ハッシュから削除
int
- 書式
load ( filename )
load ( filename , name )
- 引数
filename : 読み込むファイル名
name : 読み込んだモジュールに付ける名前
- 戻り値
成功 : 0 以外
エラー : null
- 機能
filename で指定されたファイル名のモジュールを読み込む。
name がなければファイル名の拡張子などの余計な部分を省いた名前が付けられる。
name があれば読み込んだモジュールに name という名前を付ける。
- サンプルコード
========== load ==========; load : 別のファイル a を読み込む ; 配列 x にランダムな数値を入れ a.sort で整列する if (null == load("a")) { print("error load\n") return } x = array(10) for (i = 0; i < x; i = i + 1) x[i] = rand() a.sort(x) for (i = 0; i < x; i = i + 1) print(x[i], "\n")========== a ==========; a : sort 関数を持つモジュール sub sort(x) { for (i = 1; i < x; i = i + 1) { for (j = i; j > 0; j = j - 1) { if (x[j-1] <= x[j]) break tmp = x[j-1] x[j-1] = x[j] x[j] = tmp } } }
str
- 書式
int ( var )
- 引数
var : 整数値を取得したい変数
- 戻り値
成功 : 整数
エラー : null
- 機能
渡された変数に従って整数値を返す。
整数ならその値。
文字列なら先頭の 0-9 を整数と解釈した値。 0-9 がなければゼロ。
配列、構造体ならその要素数。
それ以外は null を返す。
- サンプルコード
========== int ==========; int : 整数値の取得 struct point { x y } i = 100 s = "123abc" a = array(10) p = point(0, 0) print(int(i), "\n") print(int(s), "\n") print(int(a), "\n") print(int(p), "\n")
- 書式
str ( var )
- 引数
var : 文字列を取得したい変数
- 戻り値
成功 : 文字列
エラー : null
- 機能
渡された変数に従って文字列を返す。
整数なら文字列に直す。
文字列ならその文字列。
それ以外は null を返す。
- サンプルコード
========== str ==========; str : 文字列の取得 struct point { x y } i = 100 s = "123abc" a = array(10) p = point(0, 0) print(str(i), "\n") print(str(s), "\n") print(str(a), "\n") print(str(p), "\n")
clock
- 書式
time ( )
- 引数
なし
- 戻り値
現在の時間(秒単位)を表した整数
- 機能
C言語の time 関数の戻り値をそのまま返す。
1970 年を基準として何秒たっているかを表す整数値。
- サンプルコード
========== time ==========; time : 時間の取得 print("time is - ", time(), "\n");
rand
- 書式
clock ( )
- 引数
なし
- 戻り値
C言語の clock 関数の戻り値をそのまま返す。
プログラムが起動してから何ミリ秒たったかを示す整数値。
- 機能
- サンプルコード
========== clock ==========; clock : プログラム動作時間の取得 print("time from start is - ", clock(), " msec.\n");
srand
- 書式
rand ( )
- 引数
なし
- 戻り値
C言語の rand 関数の戻り値をそのまま返す。
0 - 32767 の範囲の擬似乱数。種を設定するには srand 関数を使う。
- 機能
- サンプルコード
========== rand ==========; rand : 擬似乱数の取得 for (i = 0; i < 10; i = i + 1) print(rand(), "\n")
- 書式
srand ( seed )
- 引数
seed : 乱数の種として設定する整数
- 戻り値
なし : 常に null
- 機能
C言語の srand 関数に同じ。
rand 関数で取得される乱数値の種を設定する。
- サンプルコード
========== srand ==========; srand : 擬似乱数の種を設定 srand(time()) for (i = 0; i < 10; i = i + 1) print(rand(), "\n")
close
- 書式
open ( filename )
open ( filename , mode )
- 引数
filename : ファイル名
mode : ファイルの操作モードを示す文字列
- 戻り値
成功 : ファイルデータ
エラー : null
- 機能
filename で指定したファイルを mode で指定した操作モードで開く。
戻り値のファイルデータは開いたファイルに操作するのに使用する。
mode が省略された時は読み込みモード ( "r" ) 扱いである。
mode で指定できるのは以下の6種類である。
"r" 読み込み - 既存のファイルを開く。ファイルがないとエラー。 "w" 書き込み - ファイルを初期化して開く。ファイルがなければ新しく作る。 "a" 追加書き込み - 既存のファイルを開く。ファイルがなければ新しく作る。 "r+" 読み込み、書き込み - 書き込みも出来る "r" モード。 "w+" 書き込み、読み込み - 読み込みも出来る "w" モード。 "a+" 追加書き込み、読み込み - 読み込みも出来る "a" モード。
- サンプルコード
========== open ==========; open : open 関数を使ってファイルを開き ; 開いたファイルの内容を表示するサンプル if (2 > arg) { print("few arg\n") return -1 } file = open(arg[1]) if (null == file) { print("cannot open file\n") return -1 } loop { buf = gets(file) if (null == buf) break puts(stdout, buf) } close(file)
seek
- 書式
close ( file )
close ( filename )
- 引数
file : open の戻り値のファイルデータ
filename : ファイル名
- 戻り値
なし : 常に null
- 機能
file 又は filename で指定したファイルを閉じる。
- サンプルコード
========== close ==========
; close : open のサンプルに同じ if (2 > arg) { print("few arg\n") return -1 } file = open(arg[1]) if (null == file) { print("cannot open file\n") return -1 } loop { buf = gets(file) if (null == buf) break puts(stdout, buf) } close(file)
tell
- 書式
seek ( file , offset , flag )
seek ( filename , offset , flag )
- 引数
file : open の戻り値のファイルデータ
filename : ファイル名
offset : 操作位置の移動位置
flag : 移動位置の基準
- 戻り値
成功 : 0 以外
エラー : null
- 機能
file 又は filename で指定したファイルの操作位置を移動する。
flag には 0 - ファイル先頭 , 1 - 現在位置 , 2 - ファイル末尾 を指定できる。
flag で指定された位置から offset だけ操作位置を移動できる。
ファイル先頭、ファイル末尾を超えて操作位置を移動することは出来ない。
- サンプルコード
========== seek ==========; seek : seek , tell 関数でファイルサイズを得る ; ファイルの操作位置を最後に移動し位置を得る if (2 > arg) { print("few arg\n") return -1 } seek(arg[1], 0, 2) size = tell(arg[1]) print(arg[1], " size is ", size, " byte.\n")
input
- 書式
tell ( file )
tell ( filename )
- 引数
file : open の戻り値のファイルデータ
filename : ファイル名
- 戻り値
成功 : ファイル先頭からの現在のファイル操作位置
エラー : null
- 機能
file 又は filename で指定したファイルの操作位置を得る。
- サンプルコード
========== tell ==========; tell : seek の説明に同じ if (2 > arg) { print("few arg\n") return -1 } seek(arg[1], 0, 2) size = tell(arg[1]) print(arg[1], " size is ", size, " byte.\n")
- 書式
input ( )
input ( file )
- 引数
file : open で取得したファイルデータ
- 戻り値
成功 : 読み込んだ文字列
エラー : null
- 機能
文字列を入力する。
file が指定されていればそのファイルから入力。
指定されていなければ標準入力から入力。
- サンプルコード
========== input ==========; input : 2つの数値を入力して ; 加算した結果を表示する print("input a : ") buf = input() a = int(buf) print("input b : ") buf = input() b = int(buf) print("a + b = ", a + b, "\n")
gets
- 書式
print ( str1 , str2 , ... , strN )
print ( file , str1 , str2 , ... , strN )
- 引数
str1 ... strN : 文字列
file : open で取得したファイルデータ
- 戻り値
実際に書き出した文字列の数
- 機能
複数の文字列を出力する。
file が指定されていればそのファイルに出力。
指定されていなければ標準出力に出力する。
- サンプルコード
========== print ==========; print : 画面表示 a = "hello" b = "world" print(a, " ", b, "\n")
puts
- 書式
gets ( file )
gets ( filename )
- 引数
file : open で取得したファイルデータ
filename : ファイル名
- 戻り値
成功 : 読み込んだ文字列
エラー : null
- 機能
file 又は filename で指定したファイルから1行文字列を読み込む。
1行の終わりの改行は切り落とさない。
- サンプルコード
========== gets ==========; gets : ファイルの内容を表示 ; ファイル名を直接指定した例 ; open でファイルを開く場合は open 参照 if (2 > arg) { print("few arg\n") return -1 } loop { buf = gets(arg[1]) if (null == buf) break puts(stdout, buf) }
getc
- 書式
puts ( file , str )
puts ( filename , str )
- 引数
file : open で取得したファイルデータ
filename : ファイル名
str : 書き込む文字列
- 戻り値
成功 : 0 以外
エラー : null
- 機能
file 又は filename で指定したファイルに文字列を書き込む。
文字列最後の '\0' は書き込まない。
- サンプルコード
========== puts ==========; puts : ファイルに書き込み ; ファイル名を直接指定した例 if (2 > arg) { print("few arg\n") return -1 } loop { buf = gets(stdin) if ("\n" == buf | null == buf) break puts(arg[1], buf) }
putc
- 書式
getc ( file )
getc ( filename )
- 引数
file : open で取得したファイルデータ
filename : ファイル名
- 戻り値
成功 : 読み込んだ文字
エラー : null
- 機能
file 又は filename で指定したファイルから文字を1文字読み込む。
読み込んだ文字のみの文字列を返す。
- サンプルコード
========== getc ==========; putc : ファイルの内容を表示 ; ファイル名を直接指定した例 if (2 > arg) { print("few arg\n") return -1 } loop { ch = getc(arg[1]) if (null == ch) break putc(stdout, ch) }
read
- 書式
putc ( file , ch )
putc ( filename , ch )
- 引数
file : open で取得したファイルデータ
filename : ファイル名
ch : 書き込む文字
- 戻り値
成功 : 書き込んだ文字
エラー : null
- 機能
file 又は filename で指定したファイルに文字を1文字書き込む。
書き込む文字は ch の文字列の先頭の文字。
- サンプルコード
========== putc ==========; putc : ファイルに書き込み ; ファイル名を直接指定した例 if (2 > arg) { print("few arg\n") return -1 } loop { ch = getc(stdin) if ("\n" == ch | null == ch) break putc(arg[1], ch) }
write
- 書式
read ( file , size )
read ( filename , size )
- 引数
file : open で取得したファイルデータ
filename : ファイル名
size : ファイルから読み込むバイト数
- 戻り値
成功 : 読み込んだ文字列
エラー : null
- 機能
file 又は filename で指定したファイルから指定バイト数を文字列として読み込む。
- サンプルコード
========== read ==========; read : ファイル全体を読み込む if (null == open(arg[1])) { print("cannot open file\n") return -1 } seek(arg[1], 0, 2) size = tell(arg[1]) seek(arg[1], 0, 0) buf = read(arg[1], size) print(buf)
- 書式
write ( file , size , str )
write ( filename , size , str )
- 引数
file : open で取得したファイルデータ
filename : ファイル名
size : ファイルに書き込むバイト数
str : ファイルに書き込む文字列
- 戻り値
成功 : 書き込んだバイト数
エラー : null
- 機能
file 又は filename で指定したファイルに文字列を指定バイト数だけ書き込む。
指定バイト数が文字列の長さより大きい時は文字列の長さだけ書き込む。
- サンプルコード
========== write ==========; write : サイズを指定して書き込み if (2 > arg) { print("few arg\n") return -1 } buf = "" loop { a = gets(stdin) if ("\n" == a | null == a) break buf = join(buf, a) } write(arg[1], length(buf), buf)
length
- 書式
string ( size )
string ( str )
- 引数
size : 確保する文字列の長さ。
str : 初期化文字列。
- 戻り値
成功 : 確保された文字列。
エラー : null
- 機能
文字列を確保する。
整数が与えられれば、それを長さとする文字列の確保。
文字列が与えられれば、その文字列をコピーする。
- サンプルコード
========== string ==========; string : 文字列の確保 a = string("hello") print(a, "\n")
index
- 書式
length ( str )
- 引数
str : 文字列
- 戻り値
成功 : 文字列の長さ
エラー : null
- 機能
文字列の長さを取得する。
- サンプルコード
========== length ==========; length : 文字列の長さ a = "hello" print('string "', a, '" length is ', length(a), ".\n")
substr
- 書式
index ( text , pat )
index ( text , pat , pos )
- 引数
text : 検索される文字列
pat : 検索するパタン
pos : 検索開始位置
- 戻り値
成功 : str 中の pat が一致した位置。
失敗 : -1
エラー : null
- 機能
文字列中からパタンに一致する位置を検索する。
str 中の pat に一致する位置を返す。
pos に負の数を指定すると文字列の最後から pos の位置から探す。
- サンプルコード
========== index ==========; index : 文字列の検索 text = "this is a pen." pat = "is" pos = index(text, pat) print(pos, "\n") pos = index(text, pat, pos+1) print(pos, "\n")
trim
- 書式
substr ( s )
substr ( s , pos )
substr ( s , pos , len )
- 引数
s : 文字列
pos : 切り出し位置
len : 切り出す長さ
- 戻り値
成功 : 切り出し文字列
エラー : null
- 機能
部分文字列を切り出す。
- サンプルコード
========== substr ==========; substr : 部分文字列の切り出し s = "this is a pen." print(substr(s, 2, 2), "\n") print(substr(s, 6), "\n") print(substr(s, -4, 10), "\n")
upcase
- 書式
trim ( s )
- 引数
s : 文字列
- 戻り値
成功 : 文字列
エラー : null
- 機能
与えられた文字列の両側の空白を剥ぎ取る。
- サンプルコード
========== trim ==========; trim : 両側の空白を取る s = " hello world. this is sample. " trim(s) print(s, "\n")
downcase
- 書式
upcase ( s )
- 引数
s : 文字列
- 戻り値
成功 : 文字列
エラー : null
- 機能
文字列中の英文字をすべて大文字にする。
- サンプルコード
========== upcase ==========; upcase : 全て大文字にする s = "This is THE PEN." upcase(s) print(s, "\n")
chop
- 書式
downcase ( s )
- 引数
s : 文字列
- 戻り値
成功 : 文字列
エラー : null
- 機能
文字列中の英文字をすべて小文字にする。
- サンプルコード
========== downcase ==========; upcase : 全て大文字にする s = "This is THE PEN." downcase(s) print(s, "\n")
chomp
- 書式
chop ( s )
- 引数
s : 文字列
- 戻り値
成功 : 文字列最後から切り取った文字
エラー : null
- 機能
文字列の最後から文字を1文字切り取る。
- サンプルコード
========== chop ==========; chop : 文字列の最後から1文字切り取る s = "This is THE PEN." ch = chop(s) print(s, " - ", ch, "\n")
annex
- 書式
chomp ( s )
- 引数
s : 文字列
- 戻り値
成功 : 文字列最後から切り取った文字数
エラー : null
- 機能
文字列の最後から改行文字が続く限り切り落とす。
- サンプルコード
========== chomp ==========; chomp : 文字列の最後から改行文字を落とす loop { buf = gets(stdin) chomp(buf) if ("quit" == buf) break print(upcase(buf), "\n") }
join
- 書式
annex ( s , ch )
- 引数
s : 文字列
ch : 繋げる文字
- 戻り値
成功 : 文字列
エラー : null
- 機能
文字列 s の最後に文字列 ch の先頭の文字を連結する。
- サンプルコード
========== annex ==========; annex : 文字列の最後に文字を付け足す s = "" loop { ch = getc(stdin) s = annex(s, ch) if ("quit" == s) break if ("\n" == ch) { print(upcase(s)) s = "" } }
- 書式
join ( str1 , str2 , ... , strN )
- 引数
str1 ... strN : 文字列
- 戻り値
成功 : 文字列
エラー : null
- 機能
与えられた全ての文字列を連結する。
- サンプルコード
========== join ==========; join : 文字列を連結する a = "hello" b = "world" s = join(a, " ", b, ".") print(s, "\n")
match
- 書式
regex ( s )
- 引数
s : 文字列
- 戻り値
成功 : コンパイル済み正規表現データ
- 機能
正規表現の文字列をコンパイルして返す。
- サンプルコード
========== regex ==========; regex : 正規表現のコンパイル ; 数字を含まない文字列に match reg = regex('^[^\d]+$') s = input() if (0 != match(reg, s)) print("match\n") else print("no match\n")
replace
- 書式
match ( reg , s )
match ( reg , s , ar )
- 引数
reg : 正規表現 ( 正規表現データ or 正規表現文字列 )
s : 検索される文字列
ar : 一致文字列を取得するための配列
- 戻り値
一致 : 0 以外
不一致 : 0
エラー : null
- 機能
文字列 s に正規表現 reg に一致する部分があるか判定する。
正規表現 reg は regex の戻り値 or 正規表現文字列。
括弧で括られた部分正規表現の一致部分を ar に返す。
- サンプルコード
========== match ==========; match : 正規表現による一致テスト ; 数字のみを切り出しかつ match ar = array(1) s = input() if (0 != match('(\d+)', s, ar)) print(ar[0], "\n") else print("no match\n")
scan
- 書式
replace ( reg , s , new )
- 引数
reg : 正規表現 ( 正規表現データ or 正規表現文字列 )
s : 検索される文字列
new : 新たに置きかえる文字列
- 戻り値
一致 : 0 以外
不一致 : 0
エラー : null
- 機能
文字列 s から reg に一致する部分を検索して文字列 new に置きかえる。
置き換えるのは最初に一致した部分のみ。
- サンプルコード
========== replace ==========; replace : 一致部分の置換 s = input() replace('\d+', s, "") print(s, "\n")
split
- 書式
scan ( reg , s )
- 引数
reg : 正規表現 ( 正規表現データ or 正規表現文字列 )
s : 検索される文字列
- 戻り値
成功 : 分解された文字列の配列
エラー : null
- 機能
文字列 s から正規表現 reg に一致する部分を切り出して配列に入れて返す。
- サンプルコード
========== scan ==========; scan : 一致する部分に分解 s = input() ar = scan('\d+|\w+', s) for (i = 0; i < ar; i = i + 1) print(ar[i], "\n")
- 書式
split ( reg , s )
- 引数
reg : 正規表現 ( 正規表現データ or 正規表現文字列 )
s : 検索される文字列
- 戻り値
成功 : 分解された文字列の配列
エラー : null
- 機能
文字列 s を正規表現 reg に一致する部分で分解して配列に入れて返す。
- サンプルコード
========== split ==========; split : 一致する部分で分解 s = input() ar = split('\s+', s) for (i = 0; i < ar; i = i + 1) print(ar[i], "\n")
push
- 書式
array ( size1 , size2 , ... , sizeN )
- 引数
size1 ... sizeN : 配列のサイズ
- 戻り値
成功 : 作成された配列
エラー : null
- 機能
N次元の配列を作成する。
- サンプルコード
========== array ==========; array : 配列の作成 a = array(10) for (i = 0; i < a; i = i + 1) a[i] = rand() for (i = 0; i < a; i = i + 1) print(a[i], "\n")
pop
- 書式
push ( ar )
push ( ar , var )
- 引数
ar : 配列
var : 変数
- 戻り値
成功 : push した要素数
エラー : null
- 機能
配列の最後に要素を追加する。
var が指定されていなければ null が追加される。
var が配列ならば、その配列の要素が追加される。
- サンプルコード
========== push ==========; push : 配列の最後に要素を追加 a = array(0) for (i = 0; i < 10; i = i + 1) push(a, i) for (i = 0; i < a; i = i + 1) print(a[i], "\n")
unshift
- 書式
pop ( ar )
- 引数
ar : 配列
- 戻り値
成功 : pop した要素
エラー : null
- 機能
配列の最後の要素を取り出して返す。
- サンプルコード
========== pop ==========; pop : 配列の最後から要素を取り出し a = array(10) for (i = 0; i < a; i = i + 1) a[i] = i while (0 != a) print(pop(a), "\n")
shift
- 書式
unshift ( ar )
unshift ( ar , var )
- 引数
ar : 配列
var : 変数
- 戻り値
成功 : unshift した要素数
エラー : null
- 機能
配列の先頭に要素を追加する。
var が指定されていなければ null が追加される。
var が配列ならば、その配列の要素が追加される。
- サンプルコード
========== unshift ==========; unshift : 配列の先頭に要素を追加 a = array(0) for (i = 0; i < 10; i = i + 1) unshift(a, i) for (i = 0; i < a; i = i + 1) print(a[i], "\n")
splice
- 書式
shift ( ar )
- 引数
ar : 配列
- 戻り値
成功 : pop した要素
エラー : null
- 機能
配列の先頭の要素を取り出して返す。
- サンプルコード
========== shift ==========; shift : 配列の先頭から要素を取り出し a = array(10) for (i = 0; i < a; i = i + 1) a[i] = i while (0 != a) print(shift(a), "\n")
reverse
- 書式
splice ( ar , pos )
splice ( ar , pos , len)
splice ( ar , pos , len , var )
- 引数
ar : 配列
pos : 取り換え開始位置
len : 取り換える要素数
var : 新たに配列に入れる要素
- 戻り値
成功 : 取り換え前に元々配列に入っていた要素
エラー : null
- 機能
配列の指定した範囲の要素を取り換える。
配列 ar の位置 pos から len 要素だけを取り出して返す。
pos に負の数を指定すると配列の最後から pos だけ前の位置から。
len が与えられてなければ、pos から配列の最後まで。
var が与えられていれば、その位置には var を入れる。
var が与えられてなければ、その前後が連結される。
- サンプルコード
========== splice ==========; splice : 配列の指定要素を取り替え a = array(10) b = array(3) for (i = 0; i < a; i = i + 1) a[i] = i for (i = 0; i < b; i = i + 1) b[i] = i + 100 c = splice(a, 4, 2, b) for (i = 0; i < a; i = i + 1) print(a[i], "\n") for (i = 0; i < c; i = i + 1) print(c[i], "\n")
- 書式
reverse ( ar )
- 引数
ar : 配列
- 戻り値
成功 : 配列 ar
エラー : null
- 機能
配列の要素の前後の順を反転する。
- サンプルコード
========== reverse ==========; reverse : 配列の要素を反転 a = array(10) for (i = 0; i < a; i = i + 1) a[i] = i a = reverse(a) for (i = 0; i < a; i = i + 1) print(a[i], "\n")
cons
- 書式
list ( elem1 , elem2 , ... , elemN )
- 引数
elem1 ... elemN : リストに連結する変数
- 戻り値
成功 : リスト
エラー : null
- 機能
渡された変数を要素とするリストを作成する。
- サンプルコード
========== list ==========; list : リストの作成 lis = list("aaa", "bbb", "ccc") loop { a = car(lis) if (null == a) break print(a, "\n") lis = cdr(lis) }
car
- 書式
cons ( elem , lis )
- 引数
elem : 変数
lis : リスト
- 戻り値
成功 : リスト
エラー : null
- 機能
リスト lis の先頭に要素 elem を追加する。
- サンプルコード
========== cons ==========; cons : リストの先頭に要素を追加 lis = list("aaa", "bbb", "ccc") lis = cons("hello", lis) lis = cons("world", lis) loop { a = car(lis) if (null == a) break print(a, "\n") lis = cdr(lis) }
cdr
- 書式
car ( lis )
- 引数
lis : リスト
- 戻り値
成功 : リスト先頭の要素
エラー : null
- 機能
リストの先頭の要素を返す。
- サンプルコード
========== car ==========; car : list のサンプルに同じ lis = list("aaa", "bbb", "ccc") loop { a = car(lis) if (null == a) break print(a, "\n") lis = cdr(lis) }
concat
- 書式
cdr ( lis )
- 引数
lis : リスト
- 戻り値
成功 : 先頭の要素を削除したリスト
- 機能
先頭の要素を1つ削除したリストを作る。
- サンプルコード
========== cdr ==========; cdr : list のサンプルに同じ lis = list("aaa", "bbb", "ccc") loop { a = car(lis) if (null == a) break print(a, "\n") lis = cdr(lis) }
- 書式
concat ( lis1 , lis2 , ... , lisN )
- 引数
lis1 ... lisN : リスト
- 戻り値
成功 : リスト
エラー : null
- 機能
与えられた複数のリストの連結。
- サンプルコード
========== concat ==========; concat : リストの連結 a = list("aaa", "bbb", "ccc") b = list(0, 1, 2) c = list(null) lis = concat(a, b, c) loop { x = car(lis) if (null == x) break print(x, "\n") lis = cdr(lis) }
regist
- 書式
hash ( )
hash ( key1 , val1 , key2 , val2 , ... , keyN )
hash ( key1 , val1 , key2 , val2 , ... , keyN , valN )
- 引数
key1 ... keyN : 文字列 or 数値 で検索キーになるもの
val1 ... valN : 変数なら何でも
- 戻り値
成功 : 作成したハッシュ
エラー : null
- 機能
ハッシュの作成。
キーと値からなる要素を入れて作ることも出来る。
引数が奇数なら最後の valN は null を仮定する。
- サンプルコード
========== hash ==========; hash : ハッシュの作成 h = hash("aaa", 1, "bbb", 10, "ccc", 100) a = lookup(h, "aaa") b = lookup(h, "bbb") c = lookup(h, "ccc") print(a, "\n") print(b, "\n") print(c, "\n")
lookup
- 書式
regist ( h , key )
regist ( h , key , val )
- 引数
h : ハッシュ
key : キー
val : 値
- 戻り値
成功 : 0 以外
エラー : null
- 機能
ハッシュに検索キーを key とする値 val を登録する。
- サンプルコード
========== regist ==========; regist : ハッシュに登録 h = hash("aaa", 1, "bbb", 10, "ccc", 100) regist(h, "ddd", 1000) a = lookup(h, "aaa") b = lookup(h, "bbb") c = lookup(h, "ccc") d = lookup(h, "ddd") print(a, "\n") print(b, "\n") print(c, "\n") print(d, "\n")
delete
- 書式
lookup ( h , key )
- 引数
h : ハッシュ
key : 検索キー
- 戻り値
成功 : key に対応する値
失敗 : null
エラー : null
- 機能
ハッシュ h から検索キー key に対応する値を探して返す。
- サンプルコード
========== lookup ==========; lookup : hash のサンプルに同じ h = hash("aaa", 1, "bbb", 10, "ccc", 100) a = lookup(h, "aaa") b = lookup(h, "bbb") c = lookup(h, "ccc") print(a, "\n") print(b, "\n") print(c, "\n")
- 書式
delete ( h , key )
- 引数
h : ハッシュ
key : 検索キー
- 戻り値
成功 : key に対応する値
失敗 : null
エラー : null
- 機能
ハッシュ h から検索キー key に対応する値を削除して返す。
- サンプルコード
========== delete ==========; delete : ハッシュから削除 h = hash("aaa", 1, "bbb", 10, "ccc", 100) regist(h, "ddd", 1000) delete(h, "ccc") delete(h, "aaa") a = lookup(h, "aaa") b = lookup(h, "bbb") c = lookup(h, "ccc") d = lookup(h, "ddd") print(a, "\n") print(b, "\n") print(c, "\n") print(d, "\n")