On 02/27/2013 04:55 PM, Benjamin Barenblat wrote:
I've tried changing 'makeLink' to work on arbitrary names, as long as the record only has one.fun makeLink [nm ::: Name] (r : { nm : (unit -> transaction page) }) : xbody = <xml> <a link={r.nm ()}>call</a> </xml> fun main () = return<xml> <body> {makeLink { Target = main }} </body> </xml> However, attempting to compile this yields test.ur:3:15: (to 3:22) Invalid Link expression Expression UNBOUND_0.UNBOUND_0 {} I have no clue what's going on here. What does "Invalid Link expression" mean?
Ur/Web URLs are generated based on the names of functions that are called, so the compiler is fussy about expressions used to describe link targets. Currently, the rules in place don't support polymorphic functions. You could turn [makeLink] into a functor, with an input module containing [nm] as a parameter but an output module containing just a non-polymorphic function, and things would work.
_______________________________________________ Ur mailing list [email protected] http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
