yuu_nkjm blog
2012-11-12(Mon) [長年日記]
[Scheme][Ruby] Schemeのお勉強 (S式と評価,式と文,リテラル)
SchemeのS式(アトム,シンボル,リスト)を評価をする際の振る舞いが簡潔にまとまっていたページがあったのでメモ.特に重要と思うところを赤くした.
S 式 ─┬─ アトム ─┬─ 整数値 │ │ │ ├─ 文字列 │ │ │ └─ シンボル │ └─ リスト 図 : Scheme の基本的なデータ型いままで使ってきたデータの種類には、リスト (list)、整数値 (integer)、文字列 (string)、シンボル (symbol) があります。データの種類を「型 (type) 」といいます。このほかにも、「ベクタ (vector) 」や「文字 (character) 」など重要なデータ型 (data type) がいくつかあります。 すべてのデータをまとめて「S 式 (symbolic expression) 」または「フォーム (form) 」と呼びます。S 式は「アトム (atom) 」と「リスト (list) 」に分けられます。アトムとは、リスト以外のデータすべてのことを意味します。したがって、整数値や文字列やシンボルはアトムになります。 Scheme (Lisp) は、S 式の値を計算することで動作します。値を計算することを「評価 (evaluation) 」するといいます。評価規則はデータ型によって決められています。1. リスト リストの先頭要素を評価し、その値が関数であればそれを実行して結果を返す。たとえばシンボルの場合、その値 (関数) を取り出して実行し、その結果を返す。ほかの要素は引数として関数に渡される。 2. シンボル そのシンボルに格納されている値を返す。 3. その他 自分自身を返す。たとえば、(+ 1 2 3) を実行する場合、関数 + を実行する前に、引数の 1, 2, 3 を「評価」します。この場合、引数がリストやシンボルでないので、そのまま関数に渡されるのです。評価しても自分自身になるデータ型を「自己評価フォーム」といいます。通常の関数では、引数は必ず評価されることを覚えておいて下さい。 ただし、シンタックス形式の場合は引数を評価しないことがあります。define は引数を評価しませんでしたね。通常の関数は引数を評価するが、シンタックス形式は関数によって違うことに注意して下さい。
式と文,リテラル,評価あたりはよく考えると分からなくなってくることがある.以下のページが参考になる.
- Rubyist Magazine - 式と文、評価と実行、そして副作用 ―― プログラムはいかにして動くのか【前編】
RubyとPythonを比較しながら,式と文の説明をする解説記事. - Ruby Summary
Rubyにおいて,文とか式ってなんだっけって時に. - newが嫌いな理由 -- リテラル好き好き - 檜山正幸のキマイラ飼育記
リテラルの便利さを思い出したいときに.
- https://www.google.co.jp/ ×106
- https://www.google.com/ ×3
- https://www.bing.com/ ×1
- https://www.facebook.com/ ×1
- http://www.facebook.com/home.php ×1
- http://t.co/seyDurfb ×1
- http://www.facebook.com/?ref=logo ×1
- http://jp.hao123.com/yahoo-search-demo-sample?quer... ×1
- scheme s式 ×3 / scheme 式 ×2 / javascript s式 ×2 / Scheme S式 ×2 / s式 ログ ×2 / scheme リテラル式 ×1 / R言語 アトムとは ×1 / S式勉強 ×1 / scheme 副作用とは ×1