这是racket模拟return的一段代码:nth函数返回列表的第n项,可以接收空列表'()作为参数,n超过列表项数,返回空列表'()
#lang racket
(require dyoo-while-loop)
(require rackunit)
(define (nth n x)
(call/cc (lambda (return)
(let ([i 1]) (begin
(while (< i n)
(if (equal? x '()) (return '())
(begin (set! x (cdr x))
(set! i (+ i 1))
; (print x)
))
)
(if (equal? x '()) (return '()) (car x))
))
)
)
)
【 在 zhangxp024 的大作中提到: 】
: 玩racket也有好几年了,racket库比较全,从gui到web各种....
: 写着写着,发现racket,sbcl,clojure.... 没有return语句,只能在函数的最后一条一句返回。
: 真的无法忍受。这tm还能写代码吗?在函数中需要的地方,比如if while里返回,这是最常见的逻辑很简单的代码了吧?
: ...................
--
修改:zhangxp024 FROM 223.215.88.*
FROM 223.215.88.*