SunDawning avatar

ANSWER: LISP recursion using car/cdr

sundawning

Published: 09 May 2018 › Updated: 09 May 2018ANSWER: LISP recursion using car/cdr

ANSWER: LISP recursion using car/cdr

  • Question: https://stackoverflow.com/questions/50243523
  • Snapshot:
  • See detailed step by step solution: https://github.com/sundawning/literate-programming/blob/master/english-to-nato-and-vice-verse.org
  • Why answer this homework?
    Why not.
  • Answer(There is actually no final answer, many places in the code can be improved.)
    (defun natos-englishs ()
      (list '(Alfa Bravo Charlie Delta Echo Foxtrot Golf Hotel India Juliet Kilo Lima Mike November Oscar Papa Quebec Romeo Sierra Tango Uniform Victor Whiskey Xray Zulu)
            '(A B C D E F G H I J K L M N O P Q R S T U V W X Z)))
    
    (defun convert-nato-english (item)
      (destructuring-bind (natos englishs)
          (natos-englishs)
        (cond ((member item natos)
               (nth (position item natos)
                    englishs))
              ((member item englishs)
               (nth (position item englishs)
                    natos))
              (t
               (error "Unvalid")))))
    
    (defun -mapcar (function list)
      (if (null list)
          nil
          (cons (funcall function
                         (car list))
                (-mapcar function
                         (cdr list)))))
    
    (defun format-lists (function lists)
      (format nil "~{~{~A~}~^ ~}"
              (-mapcar (lambda (list)
                         (-mapcar function
                                  list))
                       lists)))
    
    (defun conve (english-lists)
      (format-lists (lambda (english)
                      (string-capitalize
                       (write-to-string
                        (convert-nato-english english))))
                    english-lists))
    
    (defun convn (nato-lists)
      (format-lists (lambda (nato)
                      (write-to-string (convert-nato-english nato)
                                       :case :downcase))
                    nato-lists))  
    
    (list (conve '((P R O)
                   (L A N)))
          (convn '((Papa Romeo Oscar)
                   (Lima Alfa November))))
    
    ("PapaRomeoOscar LimaAlfaNovember" "pro lan")
    

Leave ANSWER: LISP recursion using car/cdr to:

Written by

Read more #common-lisp posts


Best Posts From SunDawning

We have not curated any of sundawning's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From SunDawning