[英]The While Loop in Racket
在 Racket 中編寫一個過程,其作用類似於 Java 等語言中的“while 循環”。 while 循環需要兩段代碼來運行:一個條件和一個主體。 它運行主體,然后再次嘗試條件,如果為真,則再次運行主體。 這一直持續到條件返回 false。
這就是我開始的方式:然后我被卡住了。
(define (while condition body)
(when (true? condition)
(cons (proc body) (proc (rest body)))
condition
和body
是過程,所以你必須調用它們。
調用 body 后,你必須遞歸調用while
重復。
(define (while condition body)
(when (condition)
(body)
(while condition body)))
你不需要true?
, 因為when
只檢查條件是否為#f
。
在 Scheme 中 while 必須用宏來實現,以避免對 args 求值
(define-syntax while
(syntax-rules ()
((_ pred b1 ...)
(let loop () (when pred b1 ... (loop))))))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.