2017-08-01 2 views
1

Ich versuche, das kleinste gemeinsame Vielfache für alle Zahlen von 1 bis n wie in OEIS-A003418 beschrieben zu generieren. Im DrRacket REPL verwende ich den folgenden Code:Übergeben einer Liste an eine Funktion mit mehreren Funktionen in DrRacket (Scheme)

(lcm (apply values (build-list 256 add1))) 

Was mich ein "Ergebnis arity Mismatch" Fehler gibt (1 erwartet, erhielt 256). Wenn ich lcm weglasse, erhalte ich eine Sequenz von 1 bis 256 zur Konsole. Ich bin unsicher bezüglich der Ursache der Arity Mismatch, da lcm angeblich beliebig viele Argumente annehmen kann (nach the docs), und apply scheint zu tun, was ich erwarten würde, wenn es die äußerste Funktion ist und nicht ein Eingabe in lcm. Was vermisse ich? Auch wenn es eine einfachere Möglichkeit gibt, das LCM von 1 in n zu schreiben, können Sie es gerne teilen.

Antwort

1

Es gibt keinen Unterschied zwischen festen arity und nicht fest arity wenn Sie apply verwenden:

(apply lcm (build-list 256 add1)) 
+0

Ah. Ich sehe, dass ich falsch verstanden habe, wie Anwendung angewendet wird. Vielen Dank! – hatch22

Verwandte Themen