Skip to content
Snowman-s edited this page Mar 31, 2024 · 6 revisions

リテラル

リテラルとは、Trees が扱うデータです。プロシージャが受け取る引数や、返り値はリテラルです。リテラルには以下の種類があります。

  • 整数
  • 文字列
  • 真偽値
  • ボイド
  • ブロック
  • リスト

ここではボイドまで覚えておけば大丈夫です。ボイドは意味のある値を返さないプロシージャが、代わりに返すものです。

変数

変数とは、リテラルを一時的に記憶するための機構です。

以下のコードは42を出力し、その後24を出力します:


┌──────────────────────────────────────┐
│                 seq                  │     
└─┬─────────────┬─────┬─────────────┬──┘          
┌─┴──────┐   ┌──┴──┐┌─┴───┐      ┌──┴──┐
│ defset │   │print││ set ├─┐    │print│
└─┬─────┬┘   └──┬──┘└─┬───┘ │    └──┬──┘
┌─┴───┐┌┴───┐┌──┴──┐┌─┴───┐┌┴───┐┌──┴──┐
│"var"│| 42 || var |│"var"│| 24 || var |
└─────┘└────┘└─────┘└─────┘└────┘└─────┘

defset プロシージャは、変数名とリテラルを受け取り変数を定義します。このように定義された変数は、後で変数名と同じ名前のプロシージャとして参照できます。 変数の名前空間は、プロシージャと名前空間を共有するため、変数定義は同名プロシージャを(もちろん、同名変数も)上書きします。

変数にはスコープの概念があり、同じ深さのブロックかそれよりも深いブロックからしか参照できません。定義済みの変数を参照したい場合、set プロシージャを使ってください。 詳しいことはアドバンスドの「スコープ・エクスポート」のページをご覧ください。