Common Lisp пустой список

Узнай цену своей работы

Формулировка задачи:

Как сделать чтобы вместо NIL выводились ()
(defun task (lst)
  (cond ((null lst) nil)
        ((or (null (car lst))(listp (car lst))) (cons (car lst) (task (cdr lst))))
        (t (task (cdr lst)))))
 
==> TASK
 
(task '(a (b a) () c))
 
==> ((B A) NIL)

Решение задачи: «Common Lisp пустой список»

textual
Листинг программы
(in-package #:cl-user)
 
(defun print-null (stream i c a)
  (declare (ignore i c a))
  (format stream "()"))
 
(defun print-mod-list (list)
  (let ((*print-pprint-dispatch* (copy-pprint-dispatch)))
    (set-pprint-dispatch 'null (formatter "~/print-null/"))
    (pprint list)))
 
(defun print-mod-list_ (list)
  (let ((*print-pprint-dispatch* (copy-pprint-dispatch)))
    (set-pprint-dispatch
     'null
     #'(lambda (s x)
     (declare (ignore x))
     (format s "()")))
    (pprint list)))
 
CL-USER> (print-mod-list_ '(nil 2 nil 3 nil))
 
(() 2 () 3 ())
; No value
CL-USER> (print-mod-list '(nil 2 nil 3 nil))
 
(() 2 () 3 ())
; No value

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.385 из 5
Похожие ответы