[解決済み】Schemeのbeginの使い方は?
2022-02-20 09:11:59
質問
を使用する方法がわかりません。
begin
キーワードは、Schemeで一連の式を書くのに便利です。
だって、式を書くときって、左から右へ評価されるんじゃないの?それなのに、なぜ
begin
というキーワードがあります。
私は、次のように読みました。
begin
は、入力と出力から副作用を排除することになっています。どなたか、beginが必要な状況を教えてください。
どのように解決するのですか?
begin
は、構文上1つの形式しか許されていないのに、複数の形式が必要な場合に必要となります。例えば、ある変数をインクリメントする必要がある場合
y
を使用するたびに
(+ x
(begin (set! y (+ y 1)) y)
z)
もしbeginを省略したら、この式は単に書けない(Common Lispでは、同じ式は次のように書ける)。
(+ x (incf y) z)
).
なお
(set! x y)
は値を返しません。このため
begin
というのは
(begin f1 f2 ... fn)
が評価するのは
f1 ... fn
の値を順番に返し、その後に
fn
. だから
(begin (set! y (+ y 1)) y)
の値を増加させます。
y
と
y
が評価され、その新しい値が返されます。
begin
は通常、何らかの副作用がある場合に使用されます。
関連
-
[解決済み】schemeのmapとapplyの違いは何ですか?
-
[解決済み】Schemeの "引数に適用可能な手続きを期待"
-
[解決済み] Schemeでリスト内の要素の出現回数を数える?
-
[解決済み] schemeのファイル拡張子は何ですか?
-
[解決済み] SchemeにおけるMemvの手続き
-
[解決済み] racketでforループを実装する
-
[解決済み] ラケットのメンバー?
-
[解決済み] Scheme/Racketにおけるletrecの意味
-
[解決済み】RacketはSchemeとどう違うのですか?
-
[解決済み] Clojure、Scheme/Racket、Common Lispの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン