请问在SCHEME中怎么在一个条件中执行两个语句
scheme吧
全部回复
仅看楼主
level 5
如(cond (条件) ((语句A) (语句B)))(语句A) (语句B)是怎么样连接起来的
2012年08月28日 08点08分 1
level 3
可以写到一个函数里
2012年08月31日 14点08分 2
呵呵,可以试试
2012年08月31日 14点08分
level 1
用(and)连接
2012年09月01日 13点09分 3
在 if 里 display 也行吗???
2012年09月07日 06点09分
用and的话,前面的返回假后面的就跳过了。
2013年02月26日 08点02分
回复 kaikai4 :确实是啊,你说的没错~~
2013年02月26日 11点02分
如果用(and)连接,它一但遇到一个返回值为假的表达式,后面的表达式就不执行了。用(begin)可以把多个表达式复合成一个表达式。
2013年07月15日 06点07分
level 7
(progn (语句A) (语句B) ...)
2013年02月26日 08点02分 4
关键是Scheme没有这个prognn函数~~
2013年02月26日 11点02分
回复 airica1 :http://www.cs.utexas.edu/~novak/schemevscl.html 貌似是begin ?
2013年02月27日 06点02分
level 3
(begin (expression1) (expression2) ...)
2013年07月15日 06点07分 5
level 6
可以
(lambda ()
(语句A)
(语句B))

2013年07月16日 15点07分 6
level 6
begin啊
2014年03月10日 13点03分 7
level 3
scheme的cond表达式基本形式是
(cond (<p1> <e1>)
(<p2> <e2>)
...
(<pn> <en>))
其中(<p> <e>)中的<p>是谓词,就是值为真或假的表达式;<e>是表达式的序列,就是可以是许多个语句,不用什么连起来。
比如我想打印一个a<x<b内的奇数,就可以这样写:
(define (print-odd a b)
(cond ((and (= (remainder (+ a 1) 2) 1) (< (+ a 1) b)) (display (+ a 1)) (newline) (print-odd (+ a 1) b))
((< a b) (print-odd (+ a 1) b))
(else (display "Done!"))))
再调用(print-odd 0 10)就会打印
1
3
5
7
9
Done!
2018年07月25日 17点07分 9
1