Adam: thank you for your prompt reply. To define defaultSettings properly, is there some way to constraint the type union (keep ++ change) to an existing type (e.g. {A:int, B:int})? The following also do not work:
fun defaultSetting [keep] [change] [keep ~ change] (args : $change) : $(keep ++ change) = update {A=1, B=1} args (* or *) fun defaultSetting [keep] [change] [keep ~ change] (args : $change) : $(keep ++ change) = {A=1,B=1} --- change ++ args -- Mark On 29/10/19 12:52 am, Adam Chlipala wrote: > On 10/28/19 3:27 PM, Mark Clements wrote: >> fun defaultSetting args = >> update {A=1, B=1} args >> >> val _ = defaultSetting {A=2} (* {A=2, B=1} *) >> val _ = defaultSetting {B=2} (* {A=1, B=2} *) > The problem is that polymorphism in Ur/Web is always declared > explicitly, not inferred as OCaml or Haskell. You must add binders > for type variables for defaultSettings just as you did for update. > (This statement applies to definitions of functions, not uses, so the > two example calls above should work once you get defaultSettings > defined properly.) När du skickar e-post till Karolinska Institutet (KI) innebär detta att KI kommer att behandla dina personuppgifter. Här finns information om hur KI behandlar personuppgifter<https://ki.se/medarbetare/integritetsskyddspolicy>. Sending email to Karolinska Institutet (KI) will result in KI processing your personal data. You can read more about KI’s processing of personal data here<https://ki.se/en/staff/data-protection-policy>. _______________________________________________ Ur mailing list Ur@impredicative.com http://www.impredicative.com/cgi-bin/mailman/listinfo/ur