• Q: Compare two list's

    From Jens Kallup@21:1/5 to All on Sat Dec 17 09:56:28 2022
    Hello,
    the Code bellow, give me NIL on last line - but I expected T.
    I used SBCL in my test's:

    Thanks for reading
    Jens Kallup

    (defvar *grammar*)
    (defvar *alist*)

    (defvar *i0*)
    (defvar *i1*)

    (setq *alist*
    '(
    (1 . ich)
    (2 . du)

    (10 . habe)
    (20 . dich)

    (30 . gefragt)
    )
    )

    (setq *grammar*
    '((1)
    (1 10)
    (1 10 20)
    (1 10 20 30)))

    (setq *i0* (assoc '1 *grammar*))
    (setq *i1*
    (progn
    (cdr (assoc '1 *alist* ))
    (cdr (assoc '10 *alist* ))
    )
    )

    (setq *i0* (loop for x in '(1 10) collect (car (assoc x *alist* ))))
    (setq *i1* (loop for y in '(1 10) collect (cdr (assoc y *alist* ))))

    (print *i0* )
    (print *i1* )


    (defun list= (l1 l2 &key (test #'equal))
    (loop for i in l1
    for j in l2
    always (funcall test i j)))


    (print (list= '(ich habe) '(*i1*) :test #'equal))

    --
    Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft. www.avast.com

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jens Kallup@21:1/5 to All on Sat Dec 17 11:47:43 2022
    (defvar *grammar*)
    (defvar *alist*)

    (defvar *i0*)
    (defvar *i1*)
    (defvar *i2*)

    (setq *alist*
    '(
    (1 . ich)
    (2 . du)

    (10 . habe)
    (20 . dich)

    (30 . gefragt)
    )
    )

    (setq *grammar*
    '((1)
    (1 10)
    (1 10 20)
    (1 10 20 30)))

    (setq *i0* (assoc '1 *grammar*))
    (setq *i1*
    (progn
    (cdr (assoc '1 *alist* ))
    (cdr (assoc '10 *alist* ))
    )
    )

    (setq *i0* '(1 10 20))

    (setq *i1* (loop for x in *i0* collect (car (assoc x *alist* ))))
    (setq *i2* (loop for y in *i0* collect (cdr (assoc y *alist* ))))

    (print *i1* )
    (print *i2* )

    (print (equal '(ich habe dich) *i2*))


    --
    Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft. www.avast.com

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jeff Barnett@21:1/5 to All on Sat Dec 17 12:13:18 2022
    T24gMTIvMTcvMjAyMiAzOjQ3IEFNLCBKZW5zIEthbGx1cCB3cm90ZToNCj4gKGRlZnZhciAq Z3JhbW1hciopDQo+IChkZWZ2YXIgKmFsaXN0KikNCj4gDQo+IChkZWZ2YXIgKmkwKikNCj4g KGRlZnZhciAqaTEqKQ0KPiAoZGVmdmFyICppMiopDQo+IA0KPiAoc2V0cSAqYWxpc3QqDQo+ ICDCoMKgwqAgJygNCj4gIMKgwqDCoMKgwqDCoMKgICgxIC4gaWNoKQ0KPiAgwqDCoMKgwqDC oMKgwqAgKDIgLiBkdSkNCj4gDQo+ICDCoMKgwqDCoMKgwqDCoCAoMTAgLiBoYWJlKQ0KPiAg wqDCoMKgwqDCoMKgwqAgKDIwIC4gZGljaCkNCj4gDQo+ICDCoMKgwqDCoMKgwqDCoCAoMzAg LiBnZWZyYWd0KQ0KPiAgwqDCoMKgICkNCj4gKQ0KPiANCj4gKHNldHEgKmdyYW1tYXIqDQo+ ICDCoCAnKCgxKQ0KPiAgwqDCoMKgICgxIDEwKQ0KPiAgwqDCoMKgICgxIDEwIDIwKQ0KPiAg wqDCoMKgICgxIDEwIDIwIDMwKSkpDQo+IA0KPiAoc2V0ccKgICppMCogKGFzc29jICcxICpn cmFtbWFyKikpDQo+IChzZXRxwqAgKmkxKg0KPiAgwqDCoMKgIChwcm9nbg0KPiAgwqDCoMKg wqDCoMKgwqAgKGNkciAoYXNzb2MgJzHCoCAqYWxpc3QqwqAgKSkNCj4gIMKgwqDCoMKgwqDC oMKgIChjZHIgKGFzc29jICcxMCAqYWxpc3QqwqAgKSkNCj4gIMKgwqDCoCApDQo+ICkNCg0K QW5kIHdoYXQgaXMvd2FzIHRoZSBwb2ludCBvZiB0aGUgYWJvdmUgZm9ybT8gSXRzIGVxdWl2 YWxlbnQgdG8NCiAgKHNldHEgKmkxKiAoY2RyIChhc3NvYyAxMCAqYWxpc3QqKSkpDQp1bmxl c3MgKGNkciAoYXNzb2MgMSAqYWxpc3QqKSkgY2F1c2VzIGFuIGVycm9yLg0KDQo+IChzZXRx ICppMCogJygxIDEwIDIwKSkNCj4gDQo+IChzZXRxICppMSogKGxvb3AgZm9yIHggaW4gKmkw KiBjb2xsZWN0IChjYXIgKGFzc29jIHggKmFsaXN0KiApKSkpDQo+IChzZXRxICppMiogKGxv b3AgZm9yIHkgaW4gKmkwKiBjb2xsZWN0IChjZHIgKGFzc29jIHkgKmFsaXN0KiApKSkpDQo+ IA0KPiAocHJpbnQgKmkxKiApDQo+IChwcmludCAqaTIqICkNCj4gDQo+IChwcmludCAoZXF1 YWwgJyhpY2ggaGFiZSBkaWNoKSAqaTIqKSktLSANCkplZmYgQmFybmV0dA0KDQo=

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jens Kallup@21:1/5 to All on Sun Dec 18 07:38:08 2022
    Am 17.12.2022 um 20:13 schrieb Jeff Barnett:

    And what is/was the point of the above form? Its equivalent to
     (setq *i1* (cdr (assoc 10 *alist*)))
    unless (cdr (assoc 1 *alist*)) causes an error.

    This was only a demonstration, on what I have worked out.
    Here comes a little Snippet from my code base:

    ;; ----------------------------------------------------
    ;; test1.lisp - a simple test.
    ;;
    ;; (c) 2022 by Jens Kallup - paule32
    ;; all rights reserved.
    ;;
    ;; Notes (2022-12-18):
    ;; - you have to install "quicklisp.lisp" on seperate
    ;; file. Then you have to create the file "quick.ok"
    ;; in the working directory where this source file(s)
    ;; exists.
    ;; ----------------------------------------------------
    (format T "Please wait, loading packages ...~%")

    #-quicklisp
    (let ((quicklisp-init "quicklisp/setup.lisp"))
    (when (probe-file quicklisp-init)
    (load quicklisp-init)))

    (with-open-stream (*standard-output* (make-broadcast-stream))
    (ql:quickload :mito)
    (ql:quickload '(:qtools :qtcore :qtgui))
    )

    ;; ----------------------------------------------------
    ;; global scope
    ;; ----------------------------------------------------
    (defvar *grammar*)
    (defvar *alist*)

    (defvar *i0*)
    (defvar *i1*)
    (defvar *i2*)

    ;; ----------------------------------------------------
    ;; functions:
    ;; ----------------------------------------------------
    (defun test1 () (progn
    (setq *alist*
    '(
    (1 . ich)
    (2 . du)

    (10 . habe)
    (20 . dich)

    (30 . gefragt)
    ))

    (setq *grammar*
    '((1)
    (1 10)
    (1 10 20)
    (1 10 20 30)))

    (setq *i0* (assoc '1 *grammar*))
    (setq *i1* (progn
    (cdr (assoc '1 *alist* ))
    (cdr (assoc '10 *alist* ))
    ))

    (setq *i0* '(1 10 20))

    (setq *i1* (loop for x in *i0* collect (car (assoc x *alist* ))))
    (setq *i2* (loop for y in *i0* collect (cdr (assoc y *alist* ))))

    (print *i1* )
    (print *i2* )

    (if (eq T (equal '(ich habe dich) *i2*))
    (progn
    (format T "~%Der Satz ist richtig.")
    (exit)
    )
    (progn
    (format T "~%Der Satz ist falsch .")
    (exit)
    )
    )
    ))

    ;; ----------------------------------------------------
    ;; entry, exception handler ...
    ;; ----------------------------------------------------
    (handler-case (progn
    (with-open-file (stream "quick.ok"
    :direction :input
    :if-does-not-exist :error))
    (format T "start test 1 ...~%")
    (test1))
    (error (c) (progn
    (format T "QuickLisp missing.~%")
    (load "quicklisp")
    (exit)
    )))



    The main problem is, how to check, if Quicklisp is installed,
    and when not, how can the Application install as needs...
    The Problem there is, that I can not include the following code
    within the code above, I posted:

    (load "quicklisp.lisp")
    (quicklisp-quickstart:install)

    ... the rest of the code ...

    Thanks for reading
    Jens


    --
    Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft. www.avast.com

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)