[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