シンボルは常に特定の値を表し、プログラムの実行中は変更できないと宣言するにはどうすればよいですか?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. Elixirモジュールで定数をどのように定義しますか?
- 3. 複数の定義をスキームの1つの "変数"にバインドしますか?
- 4. どのようにリストビューアンドロイドで画像を定義しますか?
- 5. チキンスキームモジュールでバリデーション関数をどのように定義しますか?
- 6. リストのリストのすべての要素をどのように返すのですか? (PLTスキーム)
- 7. どのように$ dbを定義しますか?注意:未定義の変数:db
- 8. デルファイでIOCTL_ATA_PASS_THROUGHをどのように定義できますか?
- 9. - マップでどのように型を定義できますか?
- 10. CFBundleIcons、CFBundleIconFiles、CFBundleIconFileをどのように定義しますか?
- 11. ソフトウェアコンポーネントをどのように定義しますか?
- 12. ユーザ定義のスレッド数はどのようにして作成しますか?
- 13. 未定義の変数エラーを定義しようとしました
- 14. コンストラクタはどのように定義しますか?
- 15. これはどのように定義しますか?
- 16. 'HTTPCookieProcessor'グローバル名はどのように定義しますか?
- 17. PHP:複数のファイルからアクセスできる定数をどのように定義するのですか?
- 18. 次の関数定義はどのように機能しますか?
- 19. Leksahのユーザー定義関数の定義に移動するにはどうすればよいですか?
- 20. 変数/関数定義をParallel(ParallelMapなど)で設定するにはどうすればよいですか?
- 21. 私のように変数を定義しているどのようにSSIS
- 22. pltスキームでファイルに改行をプリントする方法は?
- 23. Scalaでは、Javaで定義されたクラスのコンパニオンオブジェクトをどのように定義できますか?
- 24. actionscriptでカスタムオブジェクトをインラインでどのように定義しますか?
- 25. インスタンスメソッドではなく、クラスメソッドをモデルでどのように定義しますか?
- 26. PYTHONSTARTUP変数が定義されているかどうかをどのように確認しますか?
- 27. DrSchemeで定数識別子をどのように再定義できますか?
- 28. Scalaのプライマリコンストラクタでローカルvar/valをどのように定義しますか?
- 29. ユーザ定義オブジェクトの辞書的な値の割り当てをどのように定義しますか?
- 30. スキーム:組み込み関数を再定義する
Common Lispでは、通常は* stars *がトップレベル変数に使用され、+ plus-signs +が定数に使用されます。 – Svante
私はLispでプログラムを使っていませんでした。それをクリアしていただきありがとうございます。 – unj2