Skip to content

リスト

Snowman-s edited this page Mar 24, 2024 · 1 revision

「リスト」はリテラルの1つで、いくつかのリテラルを順に並べたものです(リストがリストを持つこともできます)。

リスト作成

リスト作成は listing プロシージャで行うことができます。listing は引数をその順に要素としてもつリストを返します。
この様に作成されたリストは [] プロシージャでアクセスできます。

以下の例は 「[3, 4]」 を出力した後、「4」を出力します。

┌─────┐      
│ seq ├────────────────┐   
│     ├─────────┐      │
└─┬───┘         │      │
┌─┴─────┐     ┌─┴───┐┌─┴───┐      
│defset │     │print││print│
└─┬────┬┘     └─┬───┘└─┬───┘
┌─┴─┐┌─┴─────┐┌─┴─┐  ┌─┴─┐
│"v"││listing││ v │  │[] ├──┐
└───┘└┬──┬───┘└───┘  └─┬─┘  │  
     ┌┴┐┌┴┐          ┌─┴─┐┌─┴─┐
     │3││4│          │ v ││ 1 │
     └─┘└─┘          └───┘└───┘

リスト展開 (@)

引数プラグを表すものとして、罫線文字の代わりに @ を用いると、その部分のリストを一段階展開します。

以下の例は 7 を出力します。

┌─────┐      
│print│
└─┬───┘
┌─┴─┐      
│ + │
└─@─┘
┌─┴─────┐
│listing│
└┬──┬───┘    
┌┴┐┌┴┐
│3││4│
└─┘└─┘

@ はリスト[3, 4]を受け取り、これを展開します。結果として、+ プロシージャは 引数 [3, 4] を受け取ることになります。