Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/scheme/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何垂直逐元素打印列表元素?球拍_List_Scheme_Racket - Fatal编程技术网

List 如何垂直逐元素打印列表元素?球拍

List 如何垂直逐元素打印列表元素?球拍,list,scheme,racket,List,Scheme,Racket,我是Racket的noob,我正试图找出如何垂直打印一个列表的元素,因此: (printv'(1 2 3 4)) 一, 二, 三, 四, T 我尝试使用if和cond,因此: (define (delete x lst) (cond [(member x lst)(append(reverse(rest(member x(reverse lst))))(rest(member x lst)))] [else "Error"] )) (def

我是Racket的noob,我正试图找出如何垂直打印一个列表的元素,因此:

(printv'(1 2 3 4))

一,

二,

三,

四,

T

我尝试使用if和cond,因此:

(define (delete x lst)
  (cond [(member x lst)(append(reverse(rest(member x(reverse lst))))(rest(member x lst)))]
        [else "Error"]
  ))


    (define (printv lst)
      (cond [(< 0 (length lst)) ((printf "~a ~%" (first lst))(printv (delete (first lst) lst)))]
            [else "T"]))
(定义(删除x lst)
(cond[(成员x lst)(追加(反向(成员x(反向lst))))(反向(成员x lst)))]
[否则为“错误”]
))
(定义(printv lst)
(cond[(<0(长度lst))((printf“~a~%”(第一个lst))(printv(删除(第一个lst)lst)))]
[其他“T”])
但当列表变空时,我就犯了这个错误

application: not a procedure;
 expected a procedure that can be applied to arguments
  given: #<void>
  arguments...:
应用:不是程序;
应为可应用于参数的过程
鉴于:#
论据。。。:

感谢您的帮助

您应该使用内置的程序来简化您的生活。为什么要删除这些元素?只需在列表上迭代即可。试试这个:

(define (printv lst)
  (for-each displayln lst)
  (displayln "T"))

你应该使用内置的程序使你的生活更轻松。为什么要删除这些元素?只需在列表上迭代即可。试试这个:

(define (printv lst)
  (for-each displayln lst)
  (displayln "T"))

只需删除额外的括号即可解决问题:

(define (printv lst)
  (cond [(< 0 (length lst)) 
         (printf "~a ~%" (first lst))
         (printv (delete (first lst) lst))]
        [else "T"]))
纯方案版本:

(define (printv lst)
  (cond [(null? lst) "T"]
        [else 
         (display (car lst))
         (newline)
         (printv (cdr lst))]))

只需删除额外的括号即可解决问题:

(define (printv lst)
  (cond [(< 0 (length lst)) 
         (printf "~a ~%" (first lst))
         (printv (delete (first lst) lst))]
        [else "T"]))
纯方案版本:

(define (printv lst)
  (cond [(null? lst) "T"]
        [else 
         (display (car lst))
         (newline)
         (printv (cdr lst))]))

(begin(for each(lambda(elem)(display elem)(newline))lst(display#\T)(newline))
?比你,它的工作:)但是,你知道为什么我在代码中到达“()”时出错吗?不知道。我看你的代码的时间不够长,无法尝试弄清楚它在做什么。
(begin(for each(lambda(elem)(display elem)(newline))lst)(display#\t)(newline))
?与你相比,它的效果是:)但是,你知道我在代码中达到“()”时出错的原因吗?不知道。我看你的代码的时间不够长,无法尝试找出它在做什么。谢谢!,我不知道“每个人”的功能谢谢!,我不知道“每个”的功能