LISP 105
November 9th, 2021 EL Notes Guest on 23rd November 2021 06:45:35 AM
  1. ;;add all items in list
  2. (defun sumlist (l)
  3.   ( cond
  4.     ( (null l) 0)
  5.     ( t (+ (car l) (sumlist (cdr l))))
  6.     )
  7.   )
  8. ;;demo sumlist
  9. (sumlist '(2 4 6))
  10. ;12
  11. (sumlist '(2 4 6 10 12 14 16))
  12. ;64
  13.  
  14. ;;multiply all items in list
  15. (defun multlist (l)
  16.   ( cond
  17.     ( (null l) 1)
  18.     ( t (* (car l) (multlist (cdr l))))
  19.     )
  20.   )
  21. ;;demo multlist
  22. (multlist '(2 4 6))
  23. ;48
  24. (multlist '(2 4 6 10 12 14 16))
  25. ;1290240
  26.  
  27. ;;filer argument and stop after first argument and return the tail
  28. (defun rember (x l)
  29.   ( cond
  30.     ( (null l) l)
  31.     ( (eq x (car l))(cdr l))
  32.     ( t ( cons (car l) (rember x (cdr l))))
  33.     )
  34.   )
  35. ;;demo rember 1
  36. (rember 2 '(2 3 4))
  37. ;(3 4)
  38. (rember 2 '(3 2 4 5))
  39. ;(3 4 5)
  40. (rember 2 '(3 2 4 2 5))
  41. ;(3 4 2 5)
  42.  
  43. ;;recursively filter arguement out of  all input
  44. (defun rember (x l)
  45.   ( cond
  46.     ( (null l) l)
  47.     ( (eq x (car l))(rember x (cdr l)))
  48.     ( t ( cons (car l) (rember x (cdr l))))
  49.     )
  50.   )
  51. ;;demo rember 2
  52. (rember 2 '(2 3 4))
  53. ;(3 4)
  54. (rember 2 '(3 2 4 5))
  55. ;(3 4 5)
  56. (rember 2 '(3 2 4 2 5))
  57. ;(3 4 5)
  58.  
  59.  
  60. ;;recursively take head of inner lists
  61. (defun firsts (l)
  62.   (cond
  63.    ( (null l)())
  64.    ( t (cons (car (car l))(firsts (cdr l))))
  65.    )
  66.   )
  67. ;;demo firsts
  68. (firsts '( (4 5) (6 3)(8 3 1)))
  69. ;(4 6 8)
  70.  
  71. ;;replace second param with first param
  72. (defun replace (new old l)
  73.   (cond
  74.    ( (null l) l)
  75.    ( (eq old (car l)) (cons new( cdr l)))
  76.    ( t ( (cons (car l) ( replace new old (cdr l)))))
  77.    )
  78.   )
  79. ;;demo replace
  80. (replace 3 6 '(6 5 7))
  81. ;(3 5 7)
  82.  
  83. ;;recursion replace all second param with first param
  84. (defun replaceall (new old l)
  85.   (cond
  86.    ( (null l) l)
  87.    ( (eq old (car l)) (cons new (replaceall new old (cdr l))))
  88.    ( t (cons (car l) (replaceall new old (cdr l))))
  89.   )
  90. )
  91. ;;demo replaceall
  92. (replaceall 3 6 '(6 5 7 6))
  93. ;(3 5 7 3)
  94.  
  95. ;; insert new old etc
  96. (defun insertR (new old l)
  97.   (cond
  98.    ( (null l) l)
  99.    ( (eq old (car l)) (cons (car l) (cons new (cdr l))))
  100.    ( t (cons (car l) (insertR new old (cdr l))))
  101.    )
  102.   )
  103. ;;demo insertR
  104. (insertR 3 6 '(6 7 8))
  105. ;(6 3 7 8)
  106. (insertR 3 6 '(1 4 6 7 6))
  107. ;(1 4 6 3 7 6)
  108.  
  109. ;;insert all occurences
  110. ;; insert new old etc
  111. (defun insertallR (new old l)
  112.   (cond
  113.    ( (null l) l)
  114.    ( (eq old (car l)) (cons (car l) (cons new (insertallR new old (cdr l)))))
  115.    ( t (cons (car l) (insertallR new old (cdr l))))
  116.    )
  117.   )
  118. ;;demo insertallR
  119. (insertallR 3 6 '(6 7 8))
  120. ;(6 3 7 8)
  121. (insertallR 3 6 '(1 4 6 7 6))
  122. ;(1 4 6 3 7 6 3)

Paste is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.