トーク:Scheme

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

「ネタ言語」という表現は実はBrainf***やWhiteSpace、HQ9+など冗談で作られた言語を指しとりまして、実はtypoじゃなかったりするのです。引き続き皆さんの加筆と改稿をお待ちしてます。Kon 2006年9月6日 (水) 06:13 (UTC)

Petite Chez Schemeにはコンパイラは含まれてなかったと思うんで修正しておきました。--Cametan 2008年9月22日 (月) 03:16 (UTC)

 ===display===
displayは引数に与えられた値を出力します。プログラム実行中の途中経過を表示したりする場合にも便利です。下の例では結果が1010となっていますが、displayが表示した10とインタプリタがプログラムから得た値10が、改行していないのでつながって見えるだけです。文字列や変数も引数として使えます。
 
  >(display 10)
  1010
 「(+ 1 2)」を評価した時の値と、「3」を評価したときの値はまったく等しいです。それに対し、「(display 10)」と「10」は、値はどちらも「10」ですが、実行結果は等しくありません。このように値を戻す以外の効果がある関数や手続きを「副作用」がある関数や手続きといいます。

と言うのは不正確だと思います。これはCommon Lispの挙動ですね。 仕様書R5RSでは、displayの返り値は「未定義」なんで、Common Lispのprint等とは違い、返り値として10なら10を返しません。実装によっては#<undef>を返します。これ、修正したいんですけど、ちょっと込み合った解説になってるんで、書き込んだ方が手直しした方が良いかもしれません。 --Cametan 2009年12月16日 (水) 06:24 (UTC)

display の件、概ね仰せのとおりですが、より正確には「返り値として10なら10を返しません」と言うより「返り値として10なら10を返すとは限りません」と言うべきでしょうか。標準仕様 R5RS や R6RS は undefined と unspecified を区別して使っています。手続き display の返す値を R5RS および R6RS は unspecified values としており、どんな値を返す実装も(あるいは、値を返さない実装も)仕様に適合します。
この場合は「display が返す値は、処理系によって異なります。この教科書では display が引数をそのまま返すものとして説明しています。」のような注釈を付けてはいかがでしょうか。 --Kanjy 2009年12月19日 (土) 19:25 (UTC)
>書き込んだ方が手直しした方が良いかもしれません。
それ多分ずっと前に自分が書いたモノですが(別のアカウントで)、Cametan さんも Kanjy さんも思うとおりに好きに書きなおして頂いて結構ですよ。この項目の正確さにはあまり自信がありませんし、仕様を漁る元気もないです。今さらだけど、タイトルを単に「Scheme」としてしまったのは失敗だったかも。ja.wikibooks 唯一のSchemeチュートリアルみたいに思われそうな割には、まったく包括的な内容じゃないし……Foxtrot 2011年7月16日 (土) 12:47 (UTC)