Dear Torsten,

That would be really nice to add such a comment. I even suggest to use a mixture of both, which shows all possible cases:

   or S1
   [] S2
   [] S3 then S3
   end

expands to something like

   local
      proc {C1} S1 end
      proc {C2} S2 end
      fun {C3} S3 proc {$} S4 end end
   in
      {Combinator.'or' C1#C2#C3}
   end

Thanks a lot,
raph

Torsten Anders wrote:

Dear Raphael,

thanks for your reply. Is it OK if I add the following to the doc of Combinator.'or'?

Best
Torsten


-- doc proposal


  {Combinator.'or' +T}

implements disjunction. T is a tuple of either nullary or unary procedures. The special syntax statement

  or S1 [] S2 [] S3 end

expands to

  {Combinator.'or' proc {$} S1 end # proc {$} S2 end # proc {$} S3 end}

whereas

  or S1 then S2
  [] S3 then S4
  end

expands to the following

local
    fun {C1} S1 proc {$} S2 end end
    fun {C3} S3 proc {$} S4 end end
in
    {Combinator.'or' C1#C2}
end


--



On May 4, 2008, at 3:22 PM, Raphael Collet wrote:

Dear Torsten,

I agree with you, these combinators definitely lack documentation.  But
here is how I found a solution to your problem: I simply looked at the
'Core Syntax' of you guarded or-statement:

or X=1 then Y=11
[] X=2 then Y=12
[] X=3 then Y=13
end

The statement is equivalent to

local
    fun {C1} X=1 proc {$} Y=11 end end
    fun {C2} X=2 proc {$} Y=12 end end
    fun {C3} X=3 proc {$} Y=14 end end
in
    {Combinator.'or' C1#C2#C3}
end

Now we can infer the rule: a guarded clause "A then B" is encapsulated
in a function that executes A and returns a procedure that encapsulates
B.  In other words: fun {$} A (proc {$} B end) end.

I also checked the implementation of the combinator (its source code is
in the file share/lib/cp/Combinator.oz), and the rule above is correct.

Cheers,
raph

_________________________________________________________________________________ mozart-users mailing list [email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

--
Torsten Anders
Interdisciplinary Centre for Computer Music Research
University of Plymouth
Office: +44-1752-586227
Private: +44-1752-558917
http://strasheela.sourceforge.net
http://www.torsten-anders.de





_________________________________________________________________________________ mozart-users mailing list [email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to