[linux-l] Re: Apropos Java-Bein-Klotz
Oliver Bandel
oliver at first.in-berlin.de
So Mai 29 17:47:23 CEST 2005
On Sun, May 29, 2005 at 02:18:45PM +0000, Rocco Rutte wrote:
> Hi,
>
> * Oliver Bandel [05-05-28 15:42:58 +0200] wrote:
>
> >Schick doch mal die Beispiel-Sourcen!
>
> [x] Done.
>
> Aber ich war etwas voreilig. Das mit der Bindung geht nicht so ohne
> weiteres, weil es für Strings ("denotation") keinen Konstruktor gibt.
> Aber einen solchen Konstruktor braucht man, um ihn direkt als Argument
> einer Funktion zu benutzen. Zum Beispiel baut man einen neuen Datentyp
> 'Bit' so:
>
> DATA Bit == 0 1
>
> Diese '0' und '1' kann man dann für soetwas wie "Überladen" benutzen:
>
> FUN land : bit ** bit -> bool
> DEF land (0, 0) == false
> DEF land (1, 0) == false
> DEF land (0, 1) == false
> DEF land (1, 1) == true
>
Naja, wozu Bit definieren?
Es scheint ja bool als Typ in Opal bereits vorhanden.
Oder sollte es bloß erklären, wie Du vorgehst?
In OCaml würde ich eine bool-AND so schreiben:
let my_land a b = match (a,b) with
|(false,false) -> false
|(false,true) -> false
|(true,false) -> false
|(true,true) -> true
Oder kürzer:
let my_land2 a b = match (a,b) with
|(true,true) -> true
|(_,_) -> false
Übrigens der hier:
-- map given command line option to items of type 'opts'
FUN conv : denotation -> opts
DEF conv (arg) ==
IF arg = "-a" THEN a
IF arg = "-b" THEN b
IF arg = "-c" THEN c
ELSE BAD FI
macht das Maping, also quasi das, was ich mit Assoc-List oder Pattern-matching tat.
Gruß,
Oliver
Mehr Informationen über die Mailingliste linux-l