Probleme mit Scheme-Programmierung
Probleme mit Scheme-Programmierung
Ich machs kurz:
ich hab folgenden Code
(define (showplane flugzeug)
(
(display (airplane-carrier flugzeug))(newline)
(display (airplane-type flugzeug))(newline)
(display (airplane-engines flugzeug))(newline)
(display (airplane-maxrange flugzeug))
)
)
und kriege folgende Fehlermeldung:
procedure application: expected procedure, given: (void); arguments were: (void) (void) (void) (void) (void) (void)
wie sage ich jetzt Scheme, dass ich KEINE Prozedur erwarte.
(Das display etc funktioniert. Nur haut mir Scheme danach diese fehlemeldung rein)
ich hab folgenden Code
(define (showplane flugzeug)
(
(display (airplane-carrier flugzeug))(newline)
(display (airplane-type flugzeug))(newline)
(display (airplane-engines flugzeug))(newline)
(display (airplane-maxrange flugzeug))
)
)
und kriege folgende Fehlermeldung:
procedure application: expected procedure, given: (void); arguments were: (void) (void) (void) (void) (void) (void)
wie sage ich jetzt Scheme, dass ich KEINE Prozedur erwarte.
(Das display etc funktioniert. Nur haut mir Scheme danach diese fehlemeldung rein)
- dEeP-fRiEd
- Kernelcompilierer
- Beiträge: 432
- Registriert: 19. Okt 2005 00:58
- Wohnort: Darmstadt
- Kontaktdaten:
Genau, wenn ich mich richtig erinnere geht das mit (begin ...)
oder man kann den sprachlkevel umstellen, ich glaub da gabs einen wo man auch so mehrere Befehle ausführen kann...
oder man kann den sprachlkevel umstellen, ich glaub da gabs einen wo man auch so mehrere Befehle ausführen kann...
NOSCE TE IPSUM
visit: http://www.flicknetwork.net.tc
visit: http://www.flicknetwork.net.tc
-
- Endlosschleifenbastler
- Beiträge: 169
- Registriert: 10. Nov 2005 19:28
- Wohnort: Darmstadt
Wir haben bisher weder display noch newline gelernt. Dementsprechend werden diese Befehle für die Hausaufgaben benötigt.
Bei and-Verknüpfung müsste man aber sichergehen, dass immer true zurückgegeben wird. einmal false und schon wird der Rest nicht mehr ausgeführt. Auch andere Rückgabewerte sind dann nicht mehr möglich
Benutze doch (string-append <expr1>...<exprN>)
Damit kannst du beliebig viele Ausgaben aneinanderketten.
Scheme erfordert Vorausschauendes Programmieren, da die äußerste Klammer für den Ausdruck steht, der als letztes Ausgewertet wird, während der innerste als erstes ausgewertet wird. Scheme wirkt damit effektiv dem "mal-eben-drauflos"-Stil entgegen. Es wird verlangt, dass man sich zuerst gedanken über das macht, was man schreiben will (-> templates wirken wunder!).
Mir hat es übrigens sehr geholfen, die vielen verschiedenen Themen, zu denen Herr Schiele uns etwas erklärt, zu trennen und in einer für mich verständlich Form neu zu strukturieren und aufzuschreiben. Ich hab den Text als pdf hier. Wenn Bedarf besteht, kann ich das gerne irgendwo hochladen.
Bei and-Verknüpfung müsste man aber sichergehen, dass immer true zurückgegeben wird. einmal false und schon wird der Rest nicht mehr ausgeführt. Auch andere Rückgabewerte sind dann nicht mehr möglich
Benutze doch (string-append <expr1>...<exprN>)
Damit kannst du beliebig viele Ausgaben aneinanderketten.
Scheme erfordert Vorausschauendes Programmieren, da die äußerste Klammer für den Ausdruck steht, der als letztes Ausgewertet wird, während der innerste als erstes ausgewertet wird. Scheme wirkt damit effektiv dem "mal-eben-drauflos"-Stil entgegen. Es wird verlangt, dass man sich zuerst gedanken über das macht, was man schreiben will (-> templates wirken wunder!).
Mir hat es übrigens sehr geholfen, die vielen verschiedenen Themen, zu denen Herr Schiele uns etwas erklärt, zu trennen und in einer für mich verständlich Form neu zu strukturieren und aufzuschreiben. Ich hab den Text als pdf hier. Wenn Bedarf besteht, kann ich das gerne irgendwo hochladen.
Also, erstmal danke, für den Hinweis mit (begin...).
Hab jetzt alles in eien begin Block reingetan.
Ich hab leider das Problem, dass ich Scheme schonmal hatte und deshalb schon mehr Befehle weiß als ich wissen sollte. Und selbstverständlich geht man einen Problem so an, dass man alle Werzeuge die man hat auch benutzt.
Sprachlevel hab ich auf Fortgeschrittene/r (aus dem oben genannten Grund).
@trostensillus
ich komm vielleicht später mal auf deine PDF zurück.
Hab jetzt alles in eien begin Block reingetan.
Ich hab leider das Problem, dass ich Scheme schonmal hatte und deshalb schon mehr Befehle weiß als ich wissen sollte. Und selbstverständlich geht man einen Problem so an, dass man alle Werzeuge die man hat auch benutzt.
Sprachlevel hab ich auf Fortgeschrittene/r (aus dem oben genannten Grund).
@trostensillus
ich komm vielleicht später mal auf deine PDF zurück.
Hallo,
das Problem, dass du zu viel weisst, kannst du relativ einfach umgehen, indem du den Sprachlevel so einstellst, wie in der Vorlesung angegeben.
Wenn du mit Hilfe von begin iterativ programmierst wo das nicht bekannt ist, hätte ich Schwierigkeiten zuzugestehen, dass du dich mit der Aufgabenstellung beschäftigt hast wie gefordert. Wie weiter oben schon erwähnt fordert und fördert Scheme das Aufsplitten und Rekombinieren in kleinere Teilprobleme, das ist auch der Grund, warum zu Anfang funktional programmiert wird und eben nicht in Java.
Nun scheint deine showplane-Funktion nicht direkt zur Lösung der Hausaufgabe zu gehören, insofern ist es relativ egal, zuhause kannst du ja machen was du willst. In einer Hausübung hätte ich allerdings Probleme, eine mit Hilfe von begin und ähnlichen Späßen programmierte Lösung zu akzeptieren bzw. mit der MuLö in Kongruenz zu bringen. Ich nehme an, dass andere Tutoren das ähnlich sehen und zumindest Punkte abziehen. Insofern würde ich dir den Tipp geben, dich auf den Anfängerlevel einzulassen. Ist ja irgendwie auch doof, wenn man sich die Mühe macht und dann doch keine Punkte bekommt, weil man zu schlau ist
Hinweis: Das war kein Versuch, dir an den Karren zu pinkeln, sondern die Dinge klarzustellen.
das Problem, dass du zu viel weisst, kannst du relativ einfach umgehen, indem du den Sprachlevel so einstellst, wie in der Vorlesung angegeben.

Wenn du mit Hilfe von begin iterativ programmierst wo das nicht bekannt ist, hätte ich Schwierigkeiten zuzugestehen, dass du dich mit der Aufgabenstellung beschäftigt hast wie gefordert. Wie weiter oben schon erwähnt fordert und fördert Scheme das Aufsplitten und Rekombinieren in kleinere Teilprobleme, das ist auch der Grund, warum zu Anfang funktional programmiert wird und eben nicht in Java.
Nun scheint deine showplane-Funktion nicht direkt zur Lösung der Hausaufgabe zu gehören, insofern ist es relativ egal, zuhause kannst du ja machen was du willst. In einer Hausübung hätte ich allerdings Probleme, eine mit Hilfe von begin und ähnlichen Späßen programmierte Lösung zu akzeptieren bzw. mit der MuLö in Kongruenz zu bringen. Ich nehme an, dass andere Tutoren das ähnlich sehen und zumindest Punkte abziehen. Insofern würde ich dir den Tipp geben, dich auf den Anfängerlevel einzulassen. Ist ja irgendwie auch doof, wenn man sich die Mühe macht und dann doch keine Punkte bekommt, weil man zu schlau ist

Hinweis: Das war kein Versuch, dir an den Karren zu pinkeln, sondern die Dinge klarzustellen.
- Alarion
- Endlosschleifenbastler
- Beiträge: 159
- Registriert: 18. Mai 2005 12:09
- Wohnort: Darmstadt
- Kontaktdaten:
Definitiv. Eine der Arbeitsanweisungen ist: "Stellen sie den Anfänger-Level ein." Wird diese Arbeitsanweisung nicht umgesetzt, ist das streng genommen keine Bearbeitung der Hausübung...bruse hat geschrieben:Ich nehme an, dass andere Tutoren das ähnlich sehen und zumindest Punkte abziehen.
( Diesmal weiß ich, daß Du auch Tutor bist...

Tutor "Grundlagen der Informatik 1" im WS06/07