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