2016-04-08 4 views
0

Ich verwende DrRacket zur Implementierung meines Codes im Schema. Ich bin neu in dieser Sprache und brauche Hilfe bei meinen Hausaufgaben. Mein Lehrer möchte, dass ich eine Funktion von der Konsole aus anrufe, und sie möchte nicht, dass ich sie mit ihrem Namen anrufe.Schema - Funktionsaufruf ohne Namen

Dies ist = nicht erlaubt>(function-name ‚John (X pcf F g K: 1 4))

Statt diese Notation, ich meine nennen müssen Funktion ohne Namen.

Das ist, was sie will =>('John (X pcf F g K: 1 4))

Gibt es eine Möglichkeit, eine Funktion ohne Namen und Ruf zu definieren es? Ich habe viel im Internet gesucht, konnte aber keine Lösung finden.

+0

Fragen Sie Ihren Lehrer, was sie wirklich will. – leppie

+0

Das System muss festgelegte Passwortanforderungen in Form von ('John (X pc Fz C b Y h 1 2 3 4: :)) –

Antwort

3

Ihr Beispiel macht nicht viel Sinn. Das zweite Snippet ist nur eine Liste von Parametern, unter irgendeinen Punkt müssen Sie eine echte Prozedur übergeben. Eine Alternative zu „eine Funktion aufrufen, ohne Namen“ wäre zu verwenden, um einen lambda Ausdruck, die ein anonymes Verfahren ... dies zum Beispiel:

(define (square x) 
    (* x x)) 

(square 4) 
=> 16 

entspricht dies:

((lambda (x) (* x x)) 4) ; look ma, no name! 
=> 16 

Sie können sogar rekursive Prozeduren in Bezug auf lambda s definieren, lesen Sie über den Y-Kombinator für weitere Details.

EDIT

Nach dem Lesen der Kommentare - wenn Sie einfach eine Liste von Parametern an eine Funktion übergeben müssen, verwenden Sie diese:

(apply function-name list-of-parameters) 
+0

verarbeiten. "Das System muss festgelegte Passwortanforderungen in Form von (' John (X pc F z C b Y h 1 2 3 4: :)) "das ist, was sie will. Und wie übergebe ich eine Liste von Parametern an eine Funktion? –

+1

Beachten Sie, dass Sie völlig missverstanden haben, was Ihr Lehrer gefragt hat. Wenn Sie die Parameter in einer Liste erhalten, können Sie die Funktion wie folgt aufrufen: '(Übernehmen der Funktionsnamen-Liste der Parameter)'. Was dein Lehrer fragt, bedeutet in keiner Weise, dass der Name der Funktion nicht verwendet werden kann. –

+0

Ja, ich wusste, dass ich es falsch verstanden habe. Liste der Parameter wird helfen, ty –