Wah ternyata saya salah, batas rekursinya elisp ternyata memang
terlalu rendah, di clisp (common lisp)semua baik2 saja. Pertama,
fungsi ini memang terlalu rumit

eh beda banged ya antara emacs lisp dan common lisp?


misalnya (atom ls) itu gak pernah dieksekusi, kalau rekursif murni,
sebaiknya begini saja:
(defun uniqlist (l)
  (if (null l)
      nil
    (if (member (car l) (cdr l))
  (uniqlist (remove (car l) (cdr l)))
      (cons (car l) (uniqlist (cdr l)))
      )
    )
  )

bentar2, kalau list:

(cons 'a '(a b c d))

ini hasilnya:

'(a . a b c d)

bener ga? ada titik (.) itu, ini gw juga bingung knapa harus begitu?
arti titik itu apa sih yha?



Algoritmanya agak terlalu rumit, begini lebih sederhana (bisa
menangani list yang besar):

(defun isuniq(el mylist)
  (equal (- (length mylist) (length (remove el mylist))) 1)
)

(isuniq 'a '(a b c))
t

(defun listunik (mylist)
  (let (result)
    (dolist (el mylist result)
      (if (isuniq el mylist) (setq result (append result (list el))))
      )
    )
  )

(listunik '(a b c a b a d e g h i j k l m j i q w p w))
(c d e g h k l m q p)


oh bisa tho pake (setq result x) gitu ya, kalo di emacs lisp ini bisa
bikin error exeed assigment loh, kalo boleh tau lu bikinya di commons
lisp yah?

wah thanks banged nih advicenya help me alot :D


--
http://www.nagasakti.or.id/roller/ifnu
regards

--
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis

Kirim email ke