簡體   English   中英

Racket 中的 While 循環

[英]The While Loop in Racket

在 Racket 中編寫一個過程,其作用類似於 Java 等語言中的“while 循環”。 while 循環需要兩段代碼來運行:一個條件和一個主體。 它運行主體,然后再次嘗試條件,如果為真,則再次運行主體。 這一直持續到條件返回 false。

這就是我開始的方式:然后我被卡住了。

(define (while condition body)
   (when (true? condition)
       (cons (proc body) (proc (rest body)))

conditionbody是過程,所以你必須調用它們。

調用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM