ich verstehe nicht warum es zwischen den Funktionen
Code: Alles auswählen
plus(x)
Code: Alles auswählen
star(x)
einem hin und her gegenseitiger Aufrufe kommt. Ich stelle die Frage nicht, weil ich glaube, dass ihr alle ganz
wild darauf seid euch in den (komplexen?) Code einzuarbeiten, sondern weil ich hoffe, dass jemand das Muster
erkennt und dann weiß warum keine Aufrufschleife zwischen den Funktionen entsteht.
Der Code ist dem udacity Kurs CS212 entnommen, dessen Foren leider ziemlich inaktiv sind(Kurs bereits lange vorbei):
http://pastebin.com/j2DMg7Qi
Hier meine Vorarbeit:
Code: Alles auswählen
a = plus(lit("a"))
a = plus( lambda Ns: set([s]) if len(s) in Ns else null)
a = lambda Ns: genseq(lambda Ns: set([s]) if len(s) in Ns else null,
star(lambda Ns: set([s]) if len(s) in Ns else Null),
Ns,
1
)
Code: Alles auswählen
a([4])
Code: Alles auswählen
genseq(lambda Ns: set([s]) if len(s) in Ns else null,
lambda Ns: opt(plus(lambda Ns: set([s]) if len(s) in Ns else null,
4,
1)
Nun wird doch wieder plus mit dem exakt gleichen Funktionsargument aufgerufen wie weiter oben. Es soll eine Funktion
zurückgegeben werden, die eine Funktion aufruft, die star(x) als Argument hat. Dieses wird wiederum plus(x) aufrufen.
Warum gibt es keine Endlosschleife?