기호가 항상 특정 값을 나타내며 프로그램 실행 중에 변경 될 수 없다는 것을 어떻게 선언합니까?PLT Scheme에서 상수를 어떻게 정의합니까?
답변
제가 아는 한, 이것은 Scheme에서는 불가능합니다. 그리고 모든 의도와 목적을 위해, 그것은 꼭 필요한 것은 아닙니다. 최상위 변수의 값을 일반 변수처럼 정의한 다음 을 변경하지 마십시오.. 기억을 돕기 위해 이러한 상수 명명 규칙을 채택 할 수 있습니다. 최상위 변수의 이름이 *stars*
인 책을 보았습니다.
다른 언어에서는 일부 라이브러리가 생성 한 정의보다 우선 적용될 위험이 있습니다. 그러나 PLT의 모듈 시스템과 결합 된 Scheme의 어휘 범위 지정 (lexical scoping)은 결코 일어나지 않을 것입니다.
당신은 그럼 당신은 단지보다는 더 이상 입력됩니다없는, 사방 (constant)
를 사용 set!
(define-syntax constant
(syntax-rules()
((_) 25)))
의 간단한 사용으로부터 보호 할 상수로 평가되는 매크로를 정의 할 수 있습니다 * * 일정
PLT Scheme에서는 자신의 모듈에 정의를 작성하고, 자신의 코드가`set! '을 사용하지 않으면 바인딩을 변경할 수 없습니다. 실제로 컴파일러는이를 사용하여 다양한 최적화 작업을 수행하므로 단순한 규칙이 아닙니다. 내가 생각
당신이 stackoverflow에서 들리는 것을 보니 반가워요. – unj2
정말 hackish 대답은 당신의 상수를 반환하는 리더 매크로를 정의했다 :
#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. PLT Scheme에서 모듈을 만드는 방법은 무엇입니까?
- 2. plt-scheme에서 ffi를 통해 char **에 액세스하려면 어떻게합니까?
- 3. Racket/PLT-Scheme에서 버튼의 라벨을 검색하는 방법은 무엇입니까?
- 4. plt-scheme에서 프레임 %를 '파괴/처리'하는 방법은 무엇입니까?
- 5. 하위 클래스는 어떻게 정의합니까?
- 6. 어떻게 동적으로이 버튼을 정의합니까?
- 7. FactoryGirlRails에서 시퀀스를 어떻게 정의합니까?
- 8. Scheme에서 부울 부정을 어떻게 표현합니까?
- 9. 스칼라에서 함수의 형식을 어떻게 정의합니까?
- 10. 이 배열의 키는 어떻게 정의합니까?
- 11. 소프트웨어 구성 요소는 어떻게 정의합니까?
- 12. 인스턴스의 클래스에서 메서드를 어떻게 정의합니까?
- 13. 어떻게 자바 스크립트에서 연결을 정의합니까?
- 14. 어떻게 인스턴스 변수를 동적으로 정의합니까?
- 15. PLT 스키마 정렬 기능
- 16. PLT-Scheme ....... 개체로 설정
- 17. C에서 문자열 상수를 어떻게 선언합니까?
- 18. GDB에서 #define 상수를 어떻게 인쇄합니까?
- 19. PLT 방식 (라켓)
- 20. PLT- 스킴 학습 참조
- 21. 시스템 리소스 별 아이콘 리소스는 어떻게 정의합니까?
- 22. Io 프로그래밍 언어로 내 연산자를 어떻게 정의합니까?
- 23. 어떻게 Linq 2 SQL 매핑에서 유형을 정의합니까?
- 24. C#에서 TBBUTTON 구조체를 어떻게 정의합니까?
- 25. 어떻게 장고 추상 모델에서 ImageField를 정의합니까?
- 26. backbone.js에 중첩 된 리소스는 어떻게 정의합니까?
- 27. 순환 참조에서 테이블 관계를 어떻게 정의합니까?
- 28. Mac OS X에서 사용할 라이브러리는 어떻게 정의합니까?
- 29. Devise에 컨트롤러를 등록하려면 어떻게 사용자 정의합니까?
- 30. 레일에서 두 번째 environment.rb 파일을 어떻게 정의합니까?
커먼 리스프에서는 보통 별표 변수에 * 별 *이 사용되고 상수에는 + 더하기 기호 +가 사용됩니다. – Svante
나는 Lisp에서 프로그램을 쓰지 않고 나는 항상 대회에 대해 궁금해했다. 그것을 지워 줘서 고마워. – unj2