[Ur] Hamlet like XML, structured by indentation with tag autoclosing

Sergey Mironov grrwlf at gmail.com
Thu Jun 18 14:12:12 EDT 2015


Off-topic: The interesting thing to think about is a _monadic_
anti-quotations. For example, imagine the code

return <xml><div>{| queryX(SELECT * FROM t) (fn x=> return
<xml>{[x.A]}</xml>) |}</div></xml>

desugaring into the

tmp <- queryX(SELECT * FROM t) (fn x=> return <xml>{[x.A]}</xml>);
return <xml><div>{tmp}</div></xml>

Here we see clean task handled by the optimizer: selecting the name of
temporary variable ([tmp] in this case) for us.

Regards,
Sergey


2015-06-18 19:29 GMT+03:00 Adam Chlipala <adamc at csail.mit.edu>:
> On 06/18/2015 12:09 PM, Gabriel Riba wrote:
>>
>> (* --- with hamlet like style --- *)
>>
>> fun mymodule items = <ixml>
>>
>>    <h3> title
>>    <div>
>>       $if {null items}
>>          <p> Sorry, no items left
>>       $else
>>          <ul>
>>             $forall {item} <- {items}
>>                <li> <b>{[item]}</b>
>> </ixml>
>
>
> The special syntax for 'forall' bothers me a bit.  I prefer to see standard
> function-call syntax there.  There are other iteration styles that are often
> useful but that won't fit with the 'forall' syntax.  One example is a
> fold-style traversal maintaining some other accumulator.
>
> P.S.: Sorry for the duplicate post here earlier, where I gave idiomatic
> Ur/Web code for this task very similar to what Ziv had already posted.  I
> wasn't paying enough attention, looking at later unread messages before
> replying.
>
>
> _______________________________________________
> Ur mailing list
> Ur at impredicative.com
> http://www.impredicative.com/cgi-bin/mailman/listinfo/ur



More information about the Ur mailing list