Frage zu Scala Code

Reality

Top Contributor
Hallo,
ich schau mir gerade ein Scala-Tutorial an bei dem natürliche Zahlen als Klassen implementiert wurden. Es wird auch Gebrauch von Rekursion gemacht. Allerdings verstehe ich da die rekursive Methode "+" in der Klasse "Succ" nicht:

Java:
def +(that: Nat) = new Succ(n + that)

Wo ist da die Abbruchbedingung? Ist das keine Endlosschleife?
Als erstes wird doch versucht "n + that" aufzulösen, was doch wiederum nicht anderes als "new Succ(n + that)" ist, wo dann wieder versucht wird als erstes "n + that" aufzulösen usw. usf.
Irgendwo muss ich nen Denkfehler haben, aber wo? :)

Danke im Voraus!

L. G.
Reality
 

Anhänge

  • tmp.jpg
    tmp.jpg
    56,4 KB · Aufrufe: 59
J

JohannisderKaeufer

Gast
Succ heißt Nachfolger.

Succ von 0 heißt, Nachfolger von 0 und entspricht folglich 1.

predecessor ist der Vorgänger und nicht der Wert an sich.

def +(that:Nat) = new Succ( n + that)

geht jetzt Rekursiv soweit zurück bis n nicht mehr zur Klasse Succ gehört sondern zum Object Zero.

Dort ist die Addition nämlich so implementiert.

def +(that:Nat) = that

Und das ist die Abbruchbedingung.

Bspl

Code:
def drei = new Succ(new Succ( new Succ(Zero)))
def zwei = new Succ(new Succ( Zero))

drei + zwei
=> new Succ( new Succ(new Succ( Zero)) + zwei  ) // Nachfolger von zwei plus zwei
=> new Succ( new Succ(new Succ(       Zero + zwei ))) /Nachfolger vom Nachfolger von eins plus zwei
// new Zero() + zwei => zwei
=> new Succ( new Succ(new Succ( zwei))) 
=> new Succ( new Succ(new Succ(new Succ(new Succ( Zero)))))


Tricky, eh?
 
Zuletzt bearbeitet von einem Moderator:

Reality

Top Contributor
Danke, ich kam leider noch nicht dazu mir das näher anzuschauen. Werde das die Tage machen.
Dennoch danke im Voraus! :)

L. G.
Reality
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Frage zu Fallunterscheidung bei Funktionen JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
K Unterschied funktionial <-> OO anhand von Scala <-> Java JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5
M Experten für Scala-Play- Programmierung gesucht!! JVM Sprachen: Kotlin, Scala, Groovy, Jython... 3
M Scala-Programm mit Netbeans compilieren JVM Sprachen: Kotlin, Scala, Groovy, Jython... 1
M Suche Scala Entwickler (Umsteiger [JAVA]) für Zusammenarbeit an privatem Projekt JVM Sprachen: Kotlin, Scala, Groovy, Jython... 7
Landei Scala Scala 2.10 RC JVM Sprachen: Kotlin, Scala, Groovy, Jython... 3
schlingel Scala Schulung - Gratis vom Scala-Schöpfer JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
Landei Scala Scala-Kritik JVM Sprachen: Kotlin, Scala, Groovy, Jython... 151
Spin Scala Eclipse IDE JVM Sprachen: Kotlin, Scala, Groovy, Jython... 7
Spin Funktionen vs Methods in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 9
Landei Scala Freies eBook "Scala for the impatient" JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
Spin Arithmetik in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 32
0x7F800000 Numerik in Scala (Performance) JVM Sprachen: Kotlin, Scala, Groovy, Jython... 14
Spin Scala MenuListener JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5
Spin Scala in Eclipse will nicht. JVM Sprachen: Kotlin, Scala, Groovy, Jython... 15
Landei Scala Deutsches Scala-Tutorial JVM Sprachen: Kotlin, Scala, Groovy, Jython... 3
B Scala oder Clojure JVM Sprachen: Kotlin, Scala, Groovy, Jython... 6
Landei Scala "Programming in Scala" - erste Ausgabe kostenlos JVM Sprachen: Kotlin, Scala, Groovy, Jython... 1
W Scala *.Scala to *.jar JVM Sprachen: Kotlin, Scala, Groovy, Jython... 6
H Scala und Aspekte JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4
S Scala Klasse.class in Scala? JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4
B Scala Scala und Netbeans GUI Editor JVM Sprachen: Kotlin, Scala, Groovy, Jython... 15
S Scala: Parser und Lexical JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
D Wie manche ich das in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 12
S Scala: Static - Konstruktor?? JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5
G Scala IDE JVM Sprachen: Kotlin, Scala, Groovy, Jython... 18
A Scala und J2ME JVM Sprachen: Kotlin, Scala, Groovy, Jython... 2
S Scala Fragen zu Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 21
D (Mathe-) Vektoren in Scala JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4
Landei Scala im Kommen :-) JVM Sprachen: Kotlin, Scala, Groovy, Jython... 4
M [Clojure] Code Style + Einfachere Lösung? JVM Sprachen: Kotlin, Scala, Groovy, Jython... 5

Ähnliche Java Themen

Neue Themen


Oben