[linux-l] Ocml vs. Java

Oliver Bandel oliver at first.in-berlin.de
Mo Nov 21 00:12:24 CET 2005


On Sun, Oct 16, 2005 at 11:11:30AM +0200, Volker Grabsch wrote:
> On Sat, Oct 15, 2005 at 09:28:13PM +0200, Oliver Bandel wrote:
> > On Sat, Sep 24, 2005 at 02:45:40AM +0200, Oliver Bandel wrote:
> > [...]
> > > Btw: Die Sache mit den Verschachtelungen sehe ich noch ein bischen
> > > anders. Man kann sich auch Funktionen als composites erstellen.
> > > In Haskell gibt es dafür sogar einen eigenen Operator (".").
> > [...]
> > 
> > 
> >   "The direct combination of functions by means of the operator '.' which we
> >    have seen here is not possible in other programming paradigms, or at least
> >    it would be an 'advanced' aspect of the language, rather than appearing on
> >    page 11 of an introductory text."
> >                                        (Simon Thompson, "Haskell")
> 
> 
> Naja ... also bei Ocaml bzw. Python bzw. Ruby ist es kein Ding, sowas
> auch schnell selbst zu schreiben:
> 
> def wende_an(start,*funcs):
> 	result = start
> 	for func in funcs:
> 		result = func(result)
> 	return result


Wobei das bei einer Reihe solcher Konstrukte
nicht mehr so einfach geht.

(oder lannst Du mal 'n beispiel brigen? sollen das da Listen
 von Funktionen sein?)

Bei Haskell kann man den "."-Operator auch auf eine
Reihe von Funktionen anwenden, nicht nur auf zweie,
so, wie man in der Shell die Pipe immer wieder
anwenden kann:

$  ls -l | sort -u -k5 | grep -v txt | less

oder so.

Und das dann in Haskell mit dem "."-Operator
zwischen diversen Funktioenn - quasi eine Pipleine...

da wird dann aus

let fges x = f1 ( f2 ( f3 (x) ) )

etwas wie:

fges = f3 . f2 . f1 


(oder so ähnlich... ist schon ne weile her, daß ich mit Haskell
 herum gebaut habe, aber sinngemäß geht es genau so)


Man spart sich die ganze Klammerei...

...das ist echt super-genial in Haskell gelöst.

(Auch das IO-Zeugs mit den Monaden ist dem ja ähnlich...)

Wenn man also wirklich krasse Kaskaden von Funktionen
aufbauen muß, dann kann man sowas in haskell ganz bequem
und elegant lösen. IMHO macht das keine andere Sprache so.



Ciao,
   Oliver



Mehr Informationen über die Mailingliste linux-l