[Ur] Recursive modules?
Adam Chlipala
adamc at impredicative.com
Thu Sep 16 09:42:20 EDT 2010
Fredrik Roos wrote:
> I've been experimenting with Ur for a while and I must say it's
> impressive work. One serious drawback i have noticed though is the
> lack of recursive modules. Given the way urls work in Ur, the module
> structure must correspond to the link structure on the website. And
> since websites almost always have a graph structure as opposed to a
> tree structure, Ur's hierarchal module system becomes an issue.
>
> The workaround for this is putting almost all
> url-addressable functions in the toplevel module in a recursive
> function definition. And if you want to reference these functions you
> either has to put that code in the toplevel module, or pass down
> references to them.
The theory of recursive modules scares me. :-) They just seem so
complicated!
I'm well familiar with the problem you mention. I have something of a
"design pattern" I use to get around it. Specifically, I write some
URL-accessible functions to take other URL-accessible functions as
arguments. This way, you can "tie the knot" with usual, value-level
recursion. The compiler is very aggressive about specializing functions
to remove higher-order features, so these extra arguments go away in the
compiled code.
Not the nicest thing, but it's worked for me so far. This is yet
another item to make sure I include in the tutorial I should write Real
Soon Now. :D
It occurs to me that it might be not-so-scary to support recursive
modules that don't use recursion to define types. Maybe I'll try it
some time.
More information about the Ur
mailing list