Οι ρουτίνες είναι συναρτήσεις - σχέσεις οι οποίες συνεχίζουν απο το τελευταίο στάδιο που σταμάτησαν. Παράδειγμα:

a = routine({
 1.yield;
 2.yield;
})

Στην παραπάνω συνάρτηση όταν θα την καλέσουμε πρώτη φορά : a.next.postln; θα πάρουμε το αποτέλσμα 1. Όταν θα την καλέσουμε δεύτερη φορά a.next.postln; θα πάρουμε το αποτέλσμα 2. όταν θα την καλέσουμε 3η, 4η, 5η … θα πέρνουμε το αποτέλσμα nil. όσο αφορά τα μηνύματα στα οποία ακούει το πρότυπο routine ήδη είδαμε το next, και επίσης πολύ σημαντικό είναι idle, στο οποίο η ρουτίνα παραμένει για όσες φορές ορίζει η παράμετρος του μηνύματος. στη συνέχεια ακολουθεί ένα κομμάτι ωραίου συμπτιγμένου κώδικα στο supercollider.

a = routine {
    (0..).do { |i|
        i.yield;
    };
    };

patterns define behavior; streams execute it. in computer science terms, patterns are stateless; their definition does not change over time. there is no preset limit to the number of levels of embedding.

p = pseries(0, 1, 10);
p.next; // always returns the pseries, not actual numbers
q = p.asstream;
q.next; // calling this repeatedly gets the desired increasing integers
Posted on .
blog comments powered by Disqus