Skip to content

定義済みプロシージャ一覧

Snowman-s edited this page Apr 11, 2024 · 19 revisions

定義参照の優先順位は、「現在スコープの名前空間」>「1つ上位スコープの名前空間」> ... > 「このページの『定義済みプロシージャ』」= 「リテラルプロシージャ」です。

名前空間へのアクセス

変数の内容には <変数名> でアクセスできます。このため、変数とプロシージャの名前空間は共有されています。

名前 引数 説明 返り値
<変数名> <無し> 記述された変数の内容を返す 変数の内容

リテラルプロシージャ

名前 引数 説明 返り値
正規表現 (\+|-)?[0-9]+ <無し> 記述された整数を返す 記述された整数
正規表現 ".*" <無し> 記述された文字列を返す 記述された文字列(先頭・末尾の"を除く)
true <無し> true などの真偽値を返す true
false <無し> false などの真偽値を返す false
<無し> ボイドを返す ボイド

定義済みプロシージャ

二項演算

名前 引数 説明 返り値
+ (a: int, b: int) 加算 a, b の加算
- (a: int, b: int) 減算 a, bの減算 (a - b)
* (a: int, b: int) 乗算 a, bの乗算
/ (a: int, b: int) a, bを除算し、その商 (a / b)
% (a: int, b: int) 余り a, bを除算し、その余り (a mod b)
= (a: any, b: any) 等価判定 aとbが等価ならばtrue、異なるならfalse
> (a: int, b: int) 超過の検査 a > b ならばtrue、そうでないならfalse
< (a: int, b: int) 未満の検査 a < b ならばtrue、そうでないならfalse
>= (a: int, b: int) 以上の検査 a >= b ならばtrue、そうでないならfalse
<= (a: int, b: int) 以下の検査 a <= b ならばtrue、そうでないならfalse
and (a: boolean, b: boolean) a and b aもbも true ならばtrue、そうでないならfalse
or (a: boolean, b: boolean) a or b aかbが true ならばtrue、そうでないならfalse
xor (a: boolean, b: boolean) a xor b aかbのいずれか一方が true ならばtrue、そうでないならfalse

文字列操作

名前 引数 説明 返り値
strcat (a:str, b:str) 文字列連結 a, b の連結
to str (value:any) 文字列化 valueを文字列にしたもの
str to int (value:str) 文字列の数値化 valueを整数値にしたもの
str to bytes (value:str) 文字列のバイト列化 valueをUTF8でバイト列にした整数リスト
bytes to str (bytes:list) 文字列のバイト列化 bytesを UTF8 バイト列として文字列化したもの
split str (origin:str, spliter:str) 文字列分割 origin.split(spliter) なる文字列リスト
\n <無し> 改行文字 改行文字 (0xA)
\r <無し> キャリッジリターン キャリッジリターン (0xD)
\t <無し> 水平タブ 水平タブ (0x9)
\0 <無し> ヌル文字 ヌル文字 (0x0)

リスト操作

名前 引数 説明 返り値
listing <可変長: any, any, ...> リスト化 引数リテラルをその順で持つリスト
[] (list:list, index:int) list の index 番目の要素 (0開始) list[index]
len (list:list) リスト長 list の要素数

コントロールフロー

名前 引数 説明 返り値
seq <可変長: any, any, ...> 順次処理 (実際には、引数の中で最後のものを返すだけです) 引数の最後のリテラル
for (times: int, var: str, child: Block) times 回 childブロックの実行を行う。回数はvar変数に保存される (var = 0, 1, 2, ..., times-1) ボイド
while (cond: Block, child: Block) 「cond を実行した結果がtrueなら、childを実行する」を繰り返す ボイド
if (cond: bool, then: any, else:any) cond が true ならthenを返し、false ならelseを返す 選ばれた方のリテラル
if0 (cond: any, then: any, else:any) cond が0ならthenを返し、0でないならelseを返す 選ばれた方のリテラル
ifn0 (cond: any, then: any, else:any) cond が0でないならthenを返し、0ならelseブロックを返す 選ばれた方のリテラル

変数・プロシージャ操作系

名前 引数 説明 返り値
<変数名> <無し> 変数の値を返す(getの糖衣構文) 変数の値
get (var:str) var変数の値を返す 変数の値
defset (var:str, from: any) 変数を var という名前で1つ上のスコープに定義し、fromを代入する ボイド
set (var:str, from: any) var という名前を名前空間から探し、var変数をそのスコープに上書き定義し、fromを代入する ボイド
defproc (name:str, block: block) name という名前のプロシージャを1つ上のスコープに定義する。それは、引数を $args と$0, $1, ... に入れてから block を実行するものとなる ボイド
export (name:str) name という名前を名前空間から探し、それと同じ名前、内容を2つ上のスコープで再定義する ボイド
reexport (child:any) 現在の名前空間の要素(すなわち、child からエクスポートされた物)それぞれについて、それと同じ名前、内容を1つ上かつ2つ上のスコープで再定義する <childそのもの>

I/O

名前 引数 説明 返り値
print (a:any) aを標準出力する ボイド
println (a:any) aを標準出力し、その後に改行を出力する ボイド
read line <無し> 標準入力から一行読み込み、両端をtrimしたものを返す 読んだ文字列
cmd (cmd_name:str, <可変長: str, str, ...>) cmd_name という名前の外部コマンドを、以降の文字列リテラル引数を引数として実行 コマンド実行時の標準出力を文字列化したもの

その他

名前 引数 説明 返り値
exec (block:block, <可変長: any, any, ...>) block 引数を置き換えたかのように実行する。ただし、その前に引数を $args と$0, $1, ... に入れる block の返り値
include (path: str) 現在のファイル位置からの相対パスとして path を解釈、そのファイルをコンパイルし、その結果ブロックを置き換えたかのように実行する <ファイルの内容による>