Skip to content

プロシージャ宣言

Snowman-s edited this page Mar 24, 2024 · 2 revisions

プロシージャ宣言

defproc を用いることで、プロシージャを新たに宣言し、後で使えるようにすることができます。

以下のコードでは、引数の整数を2倍した値を返すプロシージャ"two times"を定義し、それを利用して3の2倍である「6」を出力します。

┌───┐      
│seq├────────────────────┐
└─┬─┘                   ┌┴────┐
┌─┴─────┐               │print│
│defproc├─────┐         └┬────┘
└┬──────┘    ┌•┐        ┌┴────────┐
┌┴──────────┐│*├─┐      │two times│
│"two times"│└┬┘┌┴─┐    └┬────────┘
└───────────┘┌┴┐│$0│    ┌┴┐
             │2│└──┘    │3│
             └─┘        └─┘

defproc は 引数として プロシージャ名・実行ブロックを受け取り、新たにプロシージャを登録します。(2つ目の引数はブロックリテラルです。)
定義したプロシージャが呼ばれるに際し、「$args 変数に引数リテラルのリストが / $0, $1, $2, ... に引数リテラルが先頭から順に」 setされた状態で実行ブロックを実行します。

ブロックリテラルは exec プロシージャを用いて実行できますが、defproc プロシージャを用いることで短縮形で実行することができます。詳しくはアドバンスドを確認ください。