Übung 6, Aufgabe 7 - Metainterpreter

Ivan
Erstie
Erstie
Beiträge: 15
Registriert: 8. Dez 2007 15:20

Beitrag von Ivan » 8. Dez 2007 22:20

eval-var: Unbound variable: 'quote

quote? was soll das bedeuten,
wenn ich keine variable names qoute hab?
ohne stepper kann ich mit der meldung nix anfangen

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster » 8. Dez 2007 23:11

Hast du zutällig eine Liste mit dem
quote-Konstruktor erstellt?

Code: Alles auswählen

'('a)
...ist das selbe wie...

Code: Alles auswählen

(list (list 'quote 'a))
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Ivan
Erstie
Erstie
Beiträge: 15
Registriert: 8. Dez 2007 15:20

Beitrag von Ivan » 8. Dez 2007 23:35

:D aus dem Beispiel 2 zeilen drüber kopiert ohne nachzudenken,
sehr gut von mir.

#14
Mausschubser
Mausschubser
Beiträge: 80
Registriert: 7. Dez 2007 13:54
Wohnort: Darmstadt

Beitrag von #14 » 9. Dez 2007 13:15

hey alex... ja soweit ich das sehen kann, ist das template richtig... und wenn ich (empty) alleine ausfuehre, dann wird ja auch ein empty zurueckgegeben...

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster » 9. Dez 2007 13:49

Hat eigentlich schon jemand, der in
der Übungsgruppe von Kai ist
(Freitags 13:30-15:10) eine
Bestätigung auf den Eingang
der Übung bekommen?

Ich nämlich nicht und morgen
ist ja die Deadline.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

caesar
Erstie
Erstie
Beiträge: 14
Registriert: 13. Nov 2007 18:24

Beitrag von caesar » 9. Dez 2007 16:56

habe auch ein problem mit filter, ich rufe die prozedur über

Code: Alles auswählen

(my-cons 5 (my-filter (lambda (x) (= (x) 3)) alon)) 
auf, ausgegeben wird mir jededoch
(make-proc
(list 'n)
(make-if-clause.......u.s.w
woran liegt es, dass er die übergebene funktion nicht bearbeitet?

heiko_s
Erstie
Erstie
Beiträge: 20
Registriert: 8. Nov 2007 22:14
Kontaktdaten:

Beitrag von heiko_s » 9. Dez 2007 17:15

caesar hat geschrieben:habe auch ein problem mit filter, ich rufe die prozedur über

Code: Alles auswählen

(my-cons 5 (my-filter (lambda (x) (= (x) 3)) alon)) 
auf, ausgegeben wird mir jededoch
(make-proc
(list 'n)
(make-if-clause.......u.s.w
woran liegt es, dass er die übergebene funktion nicht bearbeitet?
Probiers mal mit my->cons statt mit my-cons ;)

Weiß jemand, wo der Fehler liegen könnte, wenn ich bei (my->cons 5 (my-filter (lambda (x) (< x 0)) alterate-nat)) die Fehlermeldung

Code: Alles auswählen

map: all lists must have same size; arguments were: (lambda (a1 a2) ...) (list 'relop 'lox) (list (make-application (make-variable 'my-rest) (list (make-application (make-v..." erha

erhalte?

seb1402
Neuling
Neuling
Beiträge: 7
Registriert: 4. Nov 2007 17:04
Kontaktdaten:

Beitrag von seb1402 » 9. Dez 2007 17:42

Also ich habe den Fehler auch bekommen.
Bei mir war es folgendes Problem:
Mein Vertrag von filter ist: (X TH -> boolean) (listof X) TH -> (listof X)
Das ist ja schon bekannt aus der Vorlesung.
Wenn dein Vertrag genauso aussieht, dann hast du beim Aufruf deiner Filterfunktion TH vergessen.

saba
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 17. Jan 2007 19:58

Beitrag von saba » 9. Dez 2007 18:00

seb1402 hat geschrieben:Also ich habe den Fehler auch bekommen.
Bei mir war es folgendes Problem:
Mein Vertrag von filter ist: (X TH -> boolean) (listof X) TH -> (listof X)
Das ist ja schon bekannt aus der Vorlesung.
Wenn dein Vertrag genauso aussieht, dann hast du beim Aufruf deiner Filterfunktion TH vergessen.
aber filter braucht 2 argumente oder?
bei dir gibts 3 argumente

weil eigebaute filter im scheme sieht so aus (aus scheme Help):
filter : ((X -> boolean) (listof X) -> (listof X))

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Beitrag von s!mon » 9. Dez 2007 18:08

Puh, endlich geschafft und eine schnelle Lösung gefunden :)

Zum Filtern von 5 positiven und negativen Elementen von nat und jeweils 10 von alterate-nat, also:

(list (list 1 2 3 4 5) empty (list 1 3 5 7 9 11 13 15 17 19) (list -2 -4 -6 -8 -10 -12 -14 -16 -18 -20))

Braucht mein Laptop jetzt noch 14 Sekunden :)

thx @ MelonTropic. Ohne deine Aussage, dass es auch schneller geht, hätte ich meine alte Lösung gelassen.

heiko_s
Erstie
Erstie
Beiträge: 20
Registriert: 8. Nov 2007 22:14
Kontaktdaten:

Beitrag von heiko_s » 9. Dez 2007 18:09

seb1402 hat geschrieben:Also ich habe den Fehler auch bekommen.
Bei mir war es folgendes Problem:
Mein Vertrag von filter ist: (X TH -> boolean) (listof X) TH -> (listof X)
Das ist ja schon bekannt aus der Vorlesung.
Wenn dein Vertrag genauso aussieht, dann hast du beim Aufruf deiner Filterfunktion TH vergessen.
Ich hab soeben nach mehrstündigem Suchen bemerkt, dass ich vergessen hab der Prozedur beim rekursiven aufrufen den rel-op zu übergeben :roll:

saba
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 17. Jan 2007 19:58

Beitrag von saba » 9. Dez 2007 18:26

hallo

ich habe auch eine frage zu 7.3
und zwar ob empty für metainterpreter erkannt ist und
wenn ich in filter leere liste ausgeben muss ,was soll ich schreiben
und zweites muss man selber eine relation-operation(X -> boolean) für diese aufgabe ausdenken, wie even? , sqrt? ,... und danach filter auf der verwenden?

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Beitrag von s!mon » 9. Dez 2007 18:39

zu 1: schreib einfach (empty) statt empty

zu 2: ja.. wobei das ja einfach eine abfrage ist, ob die zahl größer oder kleiner 0 ist (positiv/negativ)

saba
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 17. Jan 2007 19:58

Beitrag von saba » 9. Dez 2007 19:07

aha und andere frage ist ,
wie kann ich true und false zurück geben,weil es sieht so aus ,dass metainterpreter
true und false nicht erkennt ,weil für die Funktion X->boolean soll ich irgendwelche bedingung prüfen und true oder false zurückgeben
oder??

heiko_s
Erstie
Erstie
Beiträge: 20
Registriert: 8. Nov 2007 22:14
Kontaktdaten:

Beitrag von heiko_s » 9. Dez 2007 19:33

saba hat geschrieben:aha und andere frage ist ,
wie kann ich true und false zurück geben,weil es sieht so aus ,dass metainterpreter
true und false nicht erkennt ,weil für die Funktion X->boolean soll ich irgendwelche bedingung prüfen und true oder false zurückgeben
oder??
Das hab ich mich zuerst auch gefragt, aber statt zB (if (= x 0) true false) kann man ja auch (= x 0) verwenden, gibt ja auch nen boolean zurück. ;)

Antworten

Zurück zu „Archiv“