Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Anfängerfrage: (list ...) oder '(....) ?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Anfängerfrage: (list ...) oder '(....) ? (1016 mal gelesen)
autocart
Mitglied
Technischer Redakteur


Sehen Sie sich das Profil von autocart an!   Senden Sie eine Private Message an autocart  Schreiben Sie einen Gästebucheintrag für autocart

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 14. Jul. 2004 19:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hollodri!
Zitat aus mapcars AutoLisp-Tutorial, Kapitel „...um die Wurst“:

> (setq lispziger-allerlei
>  '( 1 "Hemd" float 16.34 pi () (expt 10 3))
> )
>
> (length lispziger-allerlei) => 7

von weiter unten noch ein Zitat:

> (setq erzeugte-liste
>  (list 'ein_element 'noch_ein_element)
> ) => (EIN-ELEMENT NOCH-EIN-ELEMENT)
>                 
> Beachten Sie, daß jetzt jedes Element einzeln gequotet werden muß.
> Wenn wir nun das Element neues_element am Ende von
> lispziger-allerlei einfügen wollen, müssen wir das so anstellen:
> (append lispziger-allerlei (list 'neues_element))
                 
meine Frage:
Braucht man jetzt (list ...) um eine Liste zu erzeugen oder geht auch (append lispziger-allerlei '(neues_element)) ähnlich zu ganz oben zitiertem Bsp. ? Wenn das mit (append ...) so nicht geht, wieso geht es dann aber mit (setq ...) ?

Gruß und danke,
Stephan acart

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 14. Jul. 2004 23:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Zitat:
Original erstellt von autocart:
Braucht man jetzt (list ...) um eine Liste zu erzeugen oder geht auch (append lispziger-allerlei '(neues_element)) ähnlich zu ganz oben zitiertem Bsp. ? Wenn das mit (append ...) so nicht geht, wieso geht es dann aber mit (setq ...) ?

Irgendwie bringst Du da ein paar Dinge durcheinander.

Listen konstruiert man mit LIST, mit QUOTE (oder kurz: dem Hochkomma) unterdrückt man die Evaluierung eines Ausdrucks (der auch eine Liste sein kann), mit APPEND fügt man zwei Listen zu einer zusammen.

Probiere doch mal den Unterschied zwischen
(list 1 2 (+ 1 2) 4)
und
(quote (1 2 (+ 1 2) 4)) bzw die Kurzform davon: '(1 2 (+ 1 2) 4)
aus. Klingelts?

Gruß
Tom Berger

------------------


Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 14. Jul. 2004 23:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für autocart 10 Unities + Antwort hilfreich

Hallo Stephan,

schau dir mal diese Zeilen an:
(setq e1 "Hallo"
      liste1 (list e1 "du")
      liste2 '(e1 "du")
      liste3 (mapcar 'eval liste2)
      )
(terpri)
(princ liste1)
(terpri)
(princ liste2)
(terpri)
(princ liste3)

Das ' sagt eigentlich nur aus, dass der danach folgende Ausdruck nicht evaluiert werden soll. Das heißt, er wird vom Programm so genommen wie er dort steht.

Da im Lisp nun einmal alles Listen sind, welche von runden Klammern umgeben sind, wird eben aus '( ... ) eine Liste.

Man kann aber das ' auch für ganz andere Dinge nutzen:
Das Beispiel verdeutlicht, dass das ' nichts mit Listen zu tun hat.
(setq pm '+)
(terpri)
(princ((eval pm) 1 1))
(terpri)
(setq pm '-)
(princ((eval pm) 1 1))
Die Variable pm (steht für PlusMinus) enthält den nicht evaluierten Wert + oder -
Dieser wird dann zur Laufzeit mittels (eval ..) evaluiert, und die Rechnung heißt dann
(+ 1 1)
oder eben
(- 1 1)

Ich hoffe dir helfen die Bsp und umgangssprachlichen Zeilen um dieses wichtige Thema zu verstehen.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

autocart
Mitglied
Technischer Redakteur


Sehen Sie sich das Profil von autocart an!   Senden Sie eine Private Message an autocart  Schreiben Sie einen Gästebucheintrag für autocart

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 15. Jul. 2004 11:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@ tom & holger:
Danke für die Antworten.
Das hilft mir schon etwas weiter. Allerdings hätte ich vorher selbt mehr ausprobieren und in der Lisp-Hilfe nachschauen sollen. z.B. finde ich unter der Beschreibung von (list ...):

As an alternative to using the list function, you can explicitly quote a list with the quote function if there are no variables or undefined items in the list. The single quote character (') is defined as the quote function.
_$ '(3.9 6.7)              means the same as  (list 3.9 6.7)

Ich nehme an, dass bei (list...) die angegebenen Argumente evaluiert werden, oder? Und wenn man das verhindert: (list 'variable1 'variable2) ist dann wirklich das gleiche wie '(variable1 variable2) - richtig?

Grüße, Stephan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 15. Jul. 2004 11:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für autocart 10 Unities + Antwort hilfreich

Ja - richtig - so wie in den Beispielen auch zu sehen.

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

autocart
Mitglied
Technischer Redakteur


Sehen Sie sich das Profil von autocart an!   Senden Sie eine Private Message an autocart  Schreiben Sie einen Gästebucheintrag für autocart

Beiträge: 695
Registriert: 08.09.2003

erstellt am: 15. Jul. 2004 11:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Juhuuuuuu!!!!
und muchas gracias for checking my thoughts.
Stephan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz