削除された内容 追加された内容
84 行
==式の要素==
プログラムとは式そのものですから、[[w:ソースコード]]では数字や文字列といったデータを記述していく必要があります。プログラミング言語にはそれぞれこのようなデータを書くための構文があり、このコード中に直接書かれた値を「リテラル」(literal)と呼びます。
 
ここでは最低限必要と思われるものだけ解説しますが、以下で紹介される以外にもいろいろな表現があります。詳しくは仕様を参照してください。また、以下の中にはまだ使い方が説明されていないものがありますが、それは後述します。
 
===数値リテラル===
 
Schemeでソースコード中に数値を記述するには、そのまま半角数字で表記し、これを「数値リテラル」といいます。小数は小数点をピリオドで入力し、負の数を示すマイナス記号(-)も使えます。「2004」「3.14159265358979」「-273.15」などです。ただし、入力した数値が必ずしも入力したとおりの精度で扱われるとは限りません。頭に「#e」をつけ完全な精度で扱うことを指定することもできます。
 
===文字列リテラル===
93 ⟶ 95行目:
文字列の値を記述する場合は、その文字列をダブルクォーテーション(")で囲んで記述し、これを「文字列リテラル」ます。これはソースコード上で数値や変数(後述)と区別するためであり、実際の評価にこのダブルクォーテーションが影響することはありません。たとえば、「"古今"」と「"東西"」というふたつの文字列をつなげるとすると、「"古今""東西"」なのではなく「"古今東西"」となります。また、「123」は数値ですが「"123"」は文字列です。「"Hello."」「"こんにちは。"」などです。
 
特別な文字を表す表現もあります。たとえば改行は「\n」、タブ文字は「\v」、逆スラッシュは「\\」です。また、これらの特別な文字は文字列リテラルの中では直接入力できません。つまり、「"
リテラルを評価すると、そのリテラルそのものが示す値を返します。「1」を評価すると「1」、「"こんにちは"」を評価すると「"こんにちは"」がそのまま返ります。
 
"」(対応するダブルクォーテーションが違う行にある)と書くと構文エラーになります。
===型===
 
リテラルを評価すると、そのリテラルそのものが示す値を返します。「1」を評価すると「1」、「"こんにちは"」を評価すると「"こんにちは"」がそのまま返ります。
 
===文字リテラル===
値には必ずその値の種類を示す「型」(type)を持ちます。「2004」は整数型、「"2004"」は文字列型ですからまったく別のものです。値の型によってどのような処理ができるのかが変わります。たとえば整数型どうしは加算できますが、整数型と文字列型は加算できません。どの型にどんな処理が可能かは後述します。
 
単一の文字を表現するには文字リテラルを使います。これは「\/」に任意の一文字を続けて表記します。たとえば「#\a」は「a」を表します。また、スペースを「#\space」、タブ文字を「#\tab」で表すなどです。
===識別子===
これは文字列リテラルとは扱いが異なりますので注意してください。たとえば「"a"」と「#\a」はどちらも「a」を表しますが、それぞれ「一文字の文字列」と「文字」で異なるので注意してください。
「識別子」(identifer)は束縛(後述)する領域を識別する文字列です。これらはそのまま[[w:ソースコード|ソースコード]]中に書くことができますが、空白文字(半角スペースと改行、タブ文字)や丸括弧などの一部の記号は使えません。「+」「[[w:hoge|hoge]]」「piyo」などです。識別子を評価すると、その識別子に束縛された値が返ります。
 
===真偽値リテラル===
一続きのリテラルに空白文字を含めることは出来ません。「12345」を記述しようとして「12   345」などと書くと、「12」と「345」と別の数値として解釈されてしまいます。以後、値を表記するときは常にこれらの表記に従って説明します。
条件が真か偽かを表すのには真偽値型の値を使います。「#t」は真、「#f」は偽を表し、条件によって処理をわけるときなどに使います。ただし、「#f」以外のすべての値は真として扱われます。
 
==コメント==