Author Topic: (cdddddddddddddddr Lst)  (Read 4401 times)

0 Members and 1 Guest are viewing this topic.

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: (cdddddddddddddddr Lst)
« Reply #15 on: November 27, 2016, 09:53:13 AM »
Code: [Select]
(defun cdrn ( n lst )
    (   (lambda (f) (vl-member-if 'f lst))
        (lambda (x) (if (minusp (setq n (1- n))) (defun f (x) t)))
    )
)
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

Grrr1337

  • Swamp Rat
  • Posts: 812
Re: (cdddddddddddddddr Lst)
« Reply #16 on: November 27, 2016, 10:05:23 AM »
Code: [Select]
(defun cdrn ( n lst )
    (   (lambda (f) (vl-member-if 'f lst))
        (lambda (x) (if (minusp (setq n (1- n))) (defun f (x) t)))
    )
)
This is mind-blown! and it reminds me of this:
Have no sense where this would be useful but for academia / lexical scope demonstration ...

Code: [Select]
(defun zomg ( ss )
    (if (eq 'pickset (type ss))
        (   (lambda (zomg) (zomg ss 0 nil))
            (lambda (ss i r / e) (if (setq e (ssname ss i)) (zomg ss (1+ i) (cons e r)) r))
        )
    )   
)
I don't remember seeing someone else to use recursive lambdas except you. :)
(apply ''((a b c)(a b c))
  '(
    (( f L ) (apply 'strcat (f L)))
    (( L ) (if L (cons (chr (car L)) (f (cdr L)))))
    (72 101 108 108 111 32 87 111 114 108 100)
  )
)
vevo.bg

Lee Mac

  • Seagull
  • Posts: 12921
  • London, England
Re: (cdddddddddddddddr Lst)
« Reply #17 on: November 27, 2016, 10:33:03 AM »
Code: [Select]
(defun cdrn ( n lst )
    (   (lambda (f) (vl-member-if 'f lst))
        (lambda (x) (if (minusp (setq n (1- n))) (defun f (x) t)))
    )
)

Unlike the vl-remove-if/-not expression, I see no advantage to using this construct with vl-member-if/-not, given that evaluation of the list items ceases when the predicate function is validated?

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: (cdddddddddddddddr Lst)
« Reply #18 on: November 27, 2016, 10:40:17 AM »
You're correct Lee:

If predicate-function returns a non-nil value, vl-member-if returns the rest of the list in the same manner as the member function.

I shouldn't code before having my first coffee. :uglystupid2:
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: (cdddddddddddddddr Lst)
« Reply #19 on: November 27, 2016, 10:45:35 AM »
I don't remember seeing someone else to use recursive lambdas except you. :)

Wow, you have an extraordinary memory. O.o All I remember of that post is that it faded into the ether rather quickly.  :-D
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

Marc'Antonio Alessi

  • Swamp Rat
  • Posts: 1454
  • Marco
Re: (cdddddddddddddddr Lst)
« Reply #20 on: November 28, 2016, 02:50:36 AM »
If you like cdddddddddddddddddddr:
Code: [Select]
; (setq aList '("01 "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15"))
; (ALE_List_NthCdr    8 aList) => ("09" "10" "11" "12" "13" "14" "15")
; (ALE_List_Member "11" aList) => ("11" "12" "13" "14" "15")
; (ALE_List_LastN     3 aList) => ("13" "14" "15")
; (ALE_List_FirstN    3 aList) => ("01" "02" "03")
; (ALE_List_LastN    10 aList) => ("06" "07" "08" "09" "10" "11" "12" "13" "14" "15")
; (ALE_List_FirstN   10 aList) => ("01" "02" "03" "04" "05" "06" "07" "08" "09" "10")
; (Ale_List_Slice  2 10 aList) => ("03" "04" "05" "06" "07" "08" "09" "10" "11")
;
; 2014/02/19 - n (Position) Nth like
(defun ALE_List_NthCdr (n l)
  (repeat (/       n              1000) (setq l (Cd1000r l)))
  (repeat (/ (setq n (rem n 1000)) 100) (setq l (Cd100r  l)))
  (repeat (/ (setq n (rem n  100))  10) (setq l (Cd10r   l)))
  (repeat (/ (setq n (rem n   10))   4) (setq l (cddddr  l)))
  (repeat (rem n 4)                     (setq l (cdr     l)))
  l
)
; 2014/03/01 for VERY long lists
(defun ALE_List_NthCdrL (n l)
  (repeat (/       n               10000) (setq l (Cd10000r l)))
  (repeat (/ (setq n (rem n 10000)) 1000) (setq l (Cd1000r  l)))
  (repeat (/ (setq n (rem n  1000))  100) (setq l (Cd100r   l)))
  (repeat (/ (setq n (rem n   100))   10) (setq l (Cd10r    l)))
  (repeat (/ (setq n (rem n    10))    4) (setq l (cddddr   l)))
  (repeat            (rem n     4)        (setq l (cdr      l)))
  l
)
; faster of member on long lists or short (1000 elements) if Item is near final position
(defun ALE_List_Member (i l)
  (ALE_List_NthCdr (vl-position i l) l)
)
;
(defun ALE_List_LastN (n l)
  (ALE_List_NthCdr (- (length l) n) l)
)
;
(defun First10 (l)
  (list
    (car l) (cadr l) (caddr l) (cadddr l) (cadddr (cdr l)) (cadddr (cddr l))
    (cadddr (cdddr l)) (cadddr (cddddr l)) (cadddr (cddddr (cdr l)))
    (cadddr (cddddr (cddr l)))
  )
)
;
(defun First09 (n l)
  (cond
    ( (eq 1 n) (list (car l))                                                )
    ( (eq 2 n) (list (car l) (cadr l))                                       )
    ( (eq 3 n) (list (car l) (cadr l) (caddr l))                             )
    ( (eq 4 n) (list (car l) (cadr l) (caddr l) (cadddr l))                  )
    ( (eq 5 n) (list (car l) (cadr l) (caddr l) (cadddr l) (cadddr (cdr l))) )
    ( (eq 6 n)
      (list (car l) (cadr l) (caddr l) (cadddr l) (cadddr (cdr l)) (cadddr (cddr l)))
    )
    ( (eq 7 n)
      (list
        (car l) (cadr l) (caddr l) (cadddr l) (cadddr (cdr l))
        (cadddr (cddr l)) (cadddr (cdddr l))
      )
    )
    ( (eq 8 n)
      (list
        (car l) (cadr l) (caddr l) (cadddr l) (cadddr (cdr l))
        (cadddr (cddr l)) (cadddr (cdddr l)) (cadddr (cddddr l))
      )
    )
    ( (eq 9 n)
      (list
        (car l) (cadr l) (caddr l) (cadddr l) (cadddr (cdr l)) (cadddr (cddr l))
        (cadddr (cdddr l)) (cadddr (cddddr l)) (cadddr (cddddr (cdr l)))
      )
    )
  )
)
(defun Cdr09 (n l)
  (cond
    ( (eq 1 n) (cdr l) )
    ( (eq 2 n) (cddr l) )
    ( (eq 3 n) (cdddr l) )
    ( (eq 4 n) (cddddr l) )
    ( (eq 5 n) (cddddr(cdr l)) )
    ( (eq 6 n) (cddddr(cddr l)) )
    ( (eq 7 n) (cddddr(cdddr l)) )
    ( (eq 8 n) (cddddr(cddddr l)) )
    ( (eq 9 n) (cddddr(cddddr(cdr l))) )
  )
)
;
(defun ALE_List_FirstN (n l)
  (reverse (ALE_List_NthCdr (- (length l) n) (reverse l)))
)
;
(defun ALE_List_Slice (n1 n2 l)
  (reverse (ALE_List_NthCdr (- (length l) n2 1) (reverse (ALE_List_NthCdr n1 l))))
)
;
(defun Cd10r (l)
  (cddddr(cddddr(cddr l)))
)
(defun Cd100r (l)
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr l)))))))))))))))))))))))))
)

(defun Cd10000r (l)
  (Cd1000r(Cd1000r(Cd1000r(Cd1000r(Cd1000r(Cd1000r
  (Cd1000r(Cd1000r(Cd1000r(Cd1000r l))))))))))
)

(defun Cd100000r (l)
  (Cd10000r(Cd10000r(Cd10000r(Cd10000r(Cd10000r(Cd10000r
  (Cd10000r(Cd10000r(Cd10000r(Cd10000r l))))))))))
)

(defun Cd1000r (l)
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr(cddddr(cddddr
  (cddddr(cddddr(cddddr(cddddr(cddddr l))))))))))))
  )))))))))))))))))))))))))))))))))))))))))))))))))
  )))))))))))))))))))))))))))))))))))))))))))))))))
  )))))))))))))))))))))))))))))))))))))))))))))))))
  )))))))))))))))))))))))))))))))))))))))))))))))))
  ))))))))))))))))))))))))))))))))))))))))))
)
;
(defun Cd10000r (l)
  (Cd1000r(Cd1000r(Cd1000r(Cd1000r(Cd1000r(Cd1000r
  (Cd1000r(Cd1000r(Cd1000r(Cd1000r l))))))))))
)

Grrr1337

  • Swamp Rat
  • Posts: 812
Re: (cdddddddddddddddr Lst)
« Reply #21 on: November 28, 2016, 04:46:21 AM »
Wow, you have an extraordinary memory. O.o All I remember of that post is that it faded into the ether rather quickly.  :-D
What can I say, I remember the stuff I don't understand. :D


If you like cdddddddddddddddddddr:
You have some nice list manipulation subfunctions!
And you reminded me that I could use an old trick:
Code: [Select]
(defun cdrn ( cdrStr Lst / d )
(repeat (- (strlen cdrStr) 2) (setq d (cons "d" d)))
(if (= cdrStr (strcat "c" (apply 'strcat d) "r"))
(progn
(repeat (length d) (setq Lst (cdr Lst)))
Lst
)
)
)
Code: [Select]
_$ (setq Lst (mapcar 'chr (vl-string->list "ABCDEFGHIJKLMNOPQ")))
("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q")
_$ (cdrn "cdar" Lst)
nil
_$ (cdrn "cdr" Lst)
("B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q")
_$ (cdrn "cddr" Lst)
("C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q")
_$ (cdrn "cdddr" Lst)
("D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q")
_$ (cdrn "car" Lst)
nil
_$ (cdrn "a" Lst)
nil
_$ (cdrn "cddddddddddddddddr" Lst)
("Q")
_$ (cdrn "cdddddddddddddddr" Lst)
("P" "Q")
_$
(apply ''((a b c)(a b c))
  '(
    (( f L ) (apply 'strcat (f L)))
    (( L ) (if L (cons (chr (car L)) (f (cdr L)))))
    (72 101 108 108 111 32 87 111 114 108 100)
  )
)
vevo.bg

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: (cdddddddddddddddr Lst)
« Reply #22 on: November 28, 2016, 09:15:29 AM »
Wow, you have an extraordinary memory. O.o All I remember of that post is that it faded into the ether rather quickly.  :-D
What can I say, I remember the stuff I don't understand. :D

It's not meant to confuse tho I can appreciate the notion of a anonymous function that is not anonymous appears to be a conundrum. :lol: That said, once it's passed as an argument it's no longer anonymous.

Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst