나는 내 여가 시간에 재미를 나를 판단하지 않습니다 어떻게이기 때문에 디지털 전자 코스에 대한 진실을 테이블 생성기를 만들기 위해 노력하고있어.PLT 구성표 noob : 부울 및/또는 프로 시저가 아닌가요?
됐건, 나는 내가 키와 사업자의 문자열에 해당하고, 값으로 그 사업자에 해당하는 계획 절차에 해시가 거라고 생각.
예.
(define operator-table #hash(("+" . or) ("*" . and)))
그래서 지금은 잘 작동하지 않습니다 아마 위의 실현,하지만 그대로 내가 바로 그것을 얻을 때까지 나는 심지어 어설프게 수 없습니다
(lambda (a b) ((hash-ref operator-table (string-ref input-str i)) a b))
같은 것을 할 수있는, 분명히
and
및
or
이 Scheme에서 특별하기 때문입니다. REPL에서
not
을 입력하면
#<procedure:not>
가 응답합니다. 그러나 내가
and
또는
or
이라면, 그것은
and: bad syntax in: and
를 말한다.
and
의 절차 버전이 있습니까? 아니면
lambda
으로해야하나요? 아니면 전적으로 뭔가를 놓치고 있습니까?
난 그냥 GET-이동에서 람다와 함께하지 않은 유일한 이유는 내가 [나는 (and #t #f #f #t #f #t)
뿐만 아니라 (and #t #f)
을 수행 할 수 있습니다] 내장 and
의 가변 인수에 대응 능력을 잃고 싶지 않아한다는 것입니다.
일부 메모 : 1. PLT 체계는 어떤 체계와도 같지 않습니다 - 특히 "지연된"체계 방언이 포함됩니다. 여기서'및'과'또는 '및'if '는 일반 함수입니다. 2.이 * 잘못된 * 게으른 언어이 구별을하지 않아도 대답 - 게으른 언어가 특별한 형태를 필요가있는 경우는 확실히있다 - 예를 들어,'where' 하스켈하는 기능은 아직 없습니다. 또한 "엄격한"연산자 (Haskell에 포함되어 있음)를 원한다면이 연산자 자체도 특별한 형식이어야합니다! –
아하! 그건 의미가 있습니다! 나는 단락을 고려하지 않았다. –