[Ur] disjointness proof in type-level functions
Adam Chlipala
adamc at csail.mit.edu
Wed Aug 7 11:32:00 EDT 2013
On 08/07/2013 10:46 AM, Sergey Mironov wrote:
> Hi. I faced a problem while exploring the type system. Looks like I
> can't define a constructor-level function which adds a field (of int
> type) to the record.
You're right that there is no disjointness obligation kind like the
disjointness obligation type. There isn't a general way to do the sort
of abstraction you've asked about. However...
> I need this to teach
> my app to define tables for custom records, adding primary key named
> Id, like
>
> con c_users = [ Name = string, Pass = string]
>
> ..
>
> table users : $(addIntField #Id c_users) PRIMARY KEY Id
>
Isn't it actually fewer characters to write
[Id = int] ++ c_users
instead, while also saving others who read your code from having to
learn a new defined function?
Also, have you considered just referring to users by name to simplify
your schema?
More information about the Ur
mailing list