List 如何垂直逐元素打印列表元素?球拍
我是Racket的noob,我正试图找出如何垂直打印一个列表的元素,因此: (printv'(1 2 3 4)) 一, 二, 三, 四, T 我尝试使用if和cond,因此: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
(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))
?与你相比,它的效果是:)但是,你知道我在代码中达到“()”时出错的原因吗?不知道。我看你的代码的时间不够长,无法尝试找出它在做什么。谢谢!,我不知道“每个人”的功能谢谢!,我不知道“每个”的功能