Scheme Dr格式中的递归

Scheme Dr格式中的递归,scheme,racket,Scheme,Racket,我正在编写一个使用递归打印列表元素的简单代码: (define (printList list) (if (empty? list) '() (begin (display (car list)) (printList (cdr list))))) 它确实有效,但我想知道是否有一种方法可以不打印空列表。当我使用(printList'(1 2 3 4))运行程序时,我得到: 1234() 有办法解决这个问题吗 谢谢您的输出包括 显示屏s

我正在编写一个使用递归打印列表元素的简单代码:

(define (printList list)
  (if (empty? list)
      '()
      (begin
        (display (car list))
        (printList (cdr list)))))
它确实有效,但我想知道是否有一种方法可以不打印空列表。当我使用(printList'(1 2 3 4))运行程序时,我得到:

1234()

有办法解决这个问题吗


谢谢

您的输出包括

  • 显示屏
    s:
    1234
    (颜色:粉色)
  • 函数的结果:
    ”()
    (颜色:蓝色)
  • 如果函数为
    void
    ,Dr Racket将不会打印函数结果,因此您可以在基本情况下返回
    void

    (define (printList list)
      (if (empty? list)
          (void)
          (begin
            (display (car list))
            (printList (cdr list)))))
    
    但这样说更为优雅

    (define (printList list)
      (unless (empty? list)
        (display (car list))
        (printList (cdr list))))
    

    如果列表为空且不需要显式的
    begin
    则隐式返回
    void

  • 显示屏
    s:
    1234
    (颜色:粉色)
  • 函数的结果:
    ”()
    (颜色:蓝色)
  • 如果函数为
    void
    ,Dr Racket将不会打印函数结果,因此您可以在基本情况下返回
    void

    (define (printList list)
      (if (empty? list)
          (void)
          (begin
            (display (car list))
            (printList (cdr list)))))
    
    但这样说更为优雅

    (define (printList list)
      (unless (empty? list)
        (display (car list))
        (printList (cdr list))))
    

    如果列表为空并且不需要显式的
    begin

    那么它将隐式返回
    void
    ,您使用它只是为了练习递归吗?因为更好(也更标准)的方法就是
    (对于每个显示lst)
    DrScheme
    在2010年将名称更改为
    DrRacket
    。你只是在练习递归吗?因为更好(也更标准)的方法就是
    (对于每个显示lst)
    DrScheme
    在2010年将名称更改为
    DrRacket