シンボルは常に特定の値を表し、プログラムの実行中は変更できないと宣言するにはどうすればよいですか?PLTスキームで定数をどのように定義しますか?
4
A
答えて
8
私が知る限り、これはSchemeでは不可能です。そして、すべての目的と目的のために、それは厳密に必要ではありません。トップレベルの値を通常の変数のように定義してからに変更しないでください。あなたが覚えておくために、これらの定数の命名規則を採用することができます。トップレベルの変数がその名前の周りに*stars*
で定義されている本を見ました。
他の言語では、作成した定義を一部のライブラリが上書きする危険性があります。しかし、SchemeのレキシカルスコープとPLTのモジュールシステムを組み合わせることで、これは決して起こりません。
2
あなたは次に、あなただけの
5
*定数*以下でタイピングではありませんこれは、どこにでも
(constant)
を使用
set!
(define-syntax constant
(syntax-rules()
((_) 25)))
の簡単な用途に対してあなたを保護する定数に評価するマクロを定義することができ
PLT Schemeでは、独自のモジュールに定義を書きます。自分のコードが `set! 'を使用していない場合、バインディングは決して変更できません。実際、コンパイラはこれを使用してさまざまな最適化を実行するため、これは単なる慣習ではありません。
+0
あなたがstackoverflowで聞いてくれてよかったよ。 – unj2
1
私は考え本当にハック答えはあなたの定数を返すリーダーマクロを定義することでした:
#lang racket
(current-readtable
(make-readtable (current-readtable)
#\k 'dispatch-macro (lambda (a b c d e f) 5)))
#k ;; <-- is read as 5
その後、(読者のマクロを変更せずに)これを再定義することは不可能であろう:
(set! #k 6) ;; <-- error, 5 is not an identifier
関連する問題
- 1. Cで定数をどのように定義しますか?
- 2. スキーム関数のチェックを定義する
- 3. どのようにMIPSアセンブリ言語で定数を定義しますか?
- 4. Elixirモジュールで定数をどのように定義しますか?
- 5. 複数の定義をスキームの1つの "変数"にバインドしますか?
- 6. Rails設定ファイルで定義された定数をどのように再定義するのですか?
- 7. 定義済みの値をどのように再定義しますか?
- 8. ARMv8でマクロをどのように定義しますか?
- 9. どのようにリストビューアンドロイドで画像を定義しますか?
- 10. どのようにCONNECTIVITY_CHANGEでBroadcastreceiverを定義しますか?
- 11. Railsでは、どのように "_new_path"を定義しますか?
- 12. リストのリストのすべての要素をどのように返すのですか? (PLTスキーム)
- 13. チキンスキームモジュールでバリデーション関数をどのように定義しますか?
- 14. デルファイでIOCTL_ATA_PASS_THROUGHをどのように定義できますか?
- 15. - マップでどのように型を定義できますか?
- 16. コマンドラインスプリングブートでクラスタノードをどのように定義できますか?
- 17. どのように$ dbを定義しますか?注意:未定義の変数:db
- 18. CFBundleIcons、CFBundleIconFiles、CFBundleIconFileをどのように定義しますか?
- 19. ソフトウェアコンポーネントをどのように定義しますか?
- 20. どのように小道具を定義できますか?
- 21. Cで変数をどのように再定義できますか?
- 22. どのようにSymfonyフレームワークでグローバルCONST変数を定義できますか?
- 23. ユーザ定義のスレッド数はどのようにして作成しますか?
- 24. キーバインディングのコマンド名はどのように定義しますか?
- 25. sklearn.svm.SVCのカスタムカーネル関数をどのように定義できますか?
- 26. スライドショーの幅はどのように定義できますか?
- 27. これはどのように定義しますか?
- 28. 'HTTPCookieProcessor'グローバル名はどのように定義しますか?
- 29. コンストラクタはどのように定義しますか?
- 30. PHP:複数のファイルからアクセスできる定数をどのように定義するのですか?
Common Lispでは、通常は* stars *がトップレベル変数に使用され、+ plus-signs +が定数に使用されます。 – Svante
私はLispでプログラムを使っていませんでした。それをクリアしていただきありがとうございます。 – unj2