[linux-l] Re: C++ - <vector> ...
Rocco Rutte
pdmef at cs.tu-berlin.de
Mi Jun 1 15:29:16 CEST 2005
Hi,
* Oliver Bandel [05-06-01 13:29:24 +0200] wrote:
>On Wed, Jun 01, 2005 at 11:06:51AM +0000, Rocco Rutte wrote:
>> * Oliver Bandel [05-06-01 00:14:40 +0200] wrote:
> >>Programmieren kann auch einfach sein und Spaß machen. :)
>> Weil ich mir die von dir erwähnte Language-Shootout-Seite mal angeguckt
>> habe und es gerade passt: man soll Code in $sprache schreiben, der
>> Zeilen von stdin liest und rückwärts auf stdout ausgibt.
>> Wenn man mal von main() und den Opal-Include-Äquivalenten absieht, ist
>> der vollständige Code der:
> || FUN reversefile : com[void]
> || DEF reversefile ==
> || readLines (stdIn) & (\\lines.writeLines (stdOut, revert (lines)))
>sieht ja schnuckelig aus.
>Ist "lines" automatisch definiert? Oder wo kommt das her?
>lines ist eine list of Inputlines?
Als erstes: '\\' steht für Lambda im funktionalen Sinne, d.h. alles
hinter '&' ist ein Lambda Term.
Der Rückgabewert von readLines() ist com[seq[string]], wobei 'com' eine
Art Wrapper ist, der einem angibt, ob eine Funktion funktioniert hat
oder nicht und warum nicht plus Daten. '&' holt aus com[irgendwas] genau
das 'irgendwas' raus, damit man es per Lambda-Ausdruck verwerten kann.
Das heisst, 'lines' ist das eigentliche Ergebnis von readLines().
Wenn man zum Beispiel Argumente von der Kommandozeile bearbeiten will,
gibt es eine Funktion 'args', die com[seq[denotation]] liefert, d.h. man
muss es mit '&' und einem Lambda-Ausdruck verwerten ala
| DEF main == args & (\\argumente.writeLines (stdOut, argumente)
oder
| FUN foo : seq[denotation] : com[void]
| DEF foo (s) == writeLines (stdOut, s)
| DEF main == args & foo
...wobei man sich hier Lambda sparen kann, weil man ja Curry machen
kann.
Und 'seq[foo]' ist _die_ rekursive Listenstuktur, wobei 'foo' den
Datentyp angeht, d.h. Opal kann selbstverständlich 'Generics' oder wie
auch immer man das nennen mag.
>So habe ich die Aufgabe jedenfalls verstanden: Reihenfolge der Zeilen
>ändern.
Das macht der Code ja auch. Abgesehen davon, dass die Opal-Syntax evtl.
neu ist: manchmal wird man ja schon stutzig, weil der Code einfach _zu_
kurz ist. *g*
bye, Rocco
--
:wq!
Mehr Informationen über die Mailingliste linux-l