Scheme if 语句。为什么这个显示语句不是运行?
Scheme if statement. Why does this display statement not run?
我正在运行宁以下代码:
(define (myignore x)
0
)
(define (myinterpreter mylist)
(evaluate mylist)
)
(define (evaluate mylist)
(if (eqv? (car mylist) 'prog)
(evaluate (cdr mylist))
(display (integer? (car mylist)))
(if (integer? (car mylist))
(display "YESSS")
)
)
(if (eqv? (car mylist) 'myignore)
(myignore (cdr mylist))
)
)
(myinterpreter '(prog 5))
我想知道为什么包含 (display ("YESSS")) 的行不 运行 尽管 (display (integer? (car mylist))) 在 [= 行之前等于 true 17=]s?
if
的语法是:
(if predicate
consequent
optional-alternative)
在您的代码中,consequent
是 (evaluate (cdr mylist))
,optional-alternative
是 (display (integer? (car mylist)))
。之后的所有内容都将被忽略。
如果要执行多个表达式,则必须将它们包装在begin
。
(define (evaluate mylist)
(if (eqv? (car mylist) 'prog)
(evaluate (cdr mylist))
(begin
(display (integer? (car mylist)))
(if (integer? (car mylist))
(display "YESSS")
)
)
)
(if (eqv? (car mylist) 'myignore)
(myignore (cdr mylist))
)
)
我正在运行宁以下代码:
(define (myignore x)
0
)
(define (myinterpreter mylist)
(evaluate mylist)
)
(define (evaluate mylist)
(if (eqv? (car mylist) 'prog)
(evaluate (cdr mylist))
(display (integer? (car mylist)))
(if (integer? (car mylist))
(display "YESSS")
)
)
(if (eqv? (car mylist) 'myignore)
(myignore (cdr mylist))
)
)
(myinterpreter '(prog 5))
我想知道为什么包含 (display ("YESSS")) 的行不 运行 尽管 (display (integer? (car mylist))) 在 [= 行之前等于 true 17=]s?
if
的语法是:
(if predicate
consequent
optional-alternative)
在您的代码中,consequent
是 (evaluate (cdr mylist))
,optional-alternative
是 (display (integer? (car mylist)))
。之后的所有内容都将被忽略。
如果要执行多个表达式,则必须将它们包装在begin
。
(define (evaluate mylist)
(if (eqv? (car mylist) 'prog)
(evaluate (cdr mylist))
(begin
(display (integer? (car mylist)))
(if (integer? (car mylist))
(display "YESSS")
)
)
)
(if (eqv? (car mylist) 'myignore)
(myignore (cdr mylist))
)
)