[Ur] Hamlet like XML, structured by indentation with tag autoclosing
Gabriel Riba
gabriel at xarxaire.com
Thu Jun 18 12:09:24 EDT 2015
El 18/06/15 a les 17:05, Ziv Scully ha escrit:
> A more direct translation is the following, which is a
> little more clunky than but has the exact same structure as the original.
>
> fun mymodule items = <xml>
> <h3>title</h3>
> {if null items
> then <p>Sorry, no items left</p>
> else <xml>
> <ul>
> {List.mapX (fn item =>
> <xml><li><b>{[item]}</b><</li></xml>)}
> </ul>
> </xml>}
> </xml>
>
> At the moment, the only place to learn about List.mapX and friends is by
> looking through the .urs files in lib/ur, though the types of most of
> the functions make clear what they do.
>
Ok. with a little bit of debug.
Being
fun null [t] (li: list t) =
case li of
[] => True
| _ => False
(* --- without hamlet --- *)
fun mymodule items = <xml>
<h3>title</h3>
<div>
{if null items
then <xml><p>Sorry, no items left</p></xml>
else <xml>
<ul>
{List.mapX (fn item =>
<xml><li><b>{[item]}</b></li></xml>) items}
</ul>
</xml>}
</div>
</xml>
(* --- 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>
More information about the Ur
mailing list