Ich habe im letzten rekursiven Aufruf einer Funktion "Schema-Anwendung keine Prozedur" bekommen

7

Also hier ist der Code:

%Vor%

und ich habe diesen Fehler nach "Berechnung gestoppt". wurde angezeigt. wie unten:

  

100017   100018   100019 * 54 Berechnung gestoppt. . . Anwendung: keine Prozedur; erwartet eine Prozedur, die auf Argumente angewendet werden kann   gegeben: # & lt; void & gt;   Argumente ...:
   # & lt; void & gt;

    
tuo 29.08.2012, 17:08
quelle

2 Antworten

16

Sie beabsichtigen, zwei Ausdrücke innerhalb des folgenden Teils von if auszuführen, aber if lässt nur einen Ausdruck in der Folge und einen in der Alternative zu.

Das Umschließen beider Ausdrücke zwischen Klammern (wie Sie es taten) wird nicht funktionieren: der resultierende Ausdruck wird als eine Funktionsanwendung des ersten Ausdrucks mit dem zweiten Ausdruck als sein Argument ausgewertet, was den Fehler "application: not a procedure; expected a procedure that can be applied to arguments ..." , weil% co_de erzeugt % wird nicht als Prozedur ausgewertet, sondern als (time-prime-test n) .

Sie können das Problem beheben, indem Sie entweder #<void> :

verwenden %Vor%

Oder ein cond :

%Vor%     
Óscar López 29.08.2012, 17:20
quelle
3
%Vor%

Dies wird versuchen, das Ergebnis von time-prime-test als Prozedur anzuwenden. time-prime-test gibt keine Prozedur zurück. Verwende begin :

%Vor%     
hzap 29.08.2012 17:12
quelle