Gergely Buday wrote:
my idea is to write a function that projectds records to a given set
of names. Is it doable in Ur/Web?
I'm not sure exactly what you're asking for.  Does the [---] operator do the
trick?  Its first argument is a value of record type, and its second
argument is a constructor of kind [{Type}], specifying which fields to
remove from the record.
It is clear what is record.1 . I would like to have

   record.[1,2,3,4]

independently what other fields does r have.

Perhaps I wasn't clear enough about what I was suggesting. Consider this function that wraps the built-in [---] operator:

(* *)
fun projection [fs1 ::: {Type}] [fs2 ::: {Type}] [fs1 ~ fs2] (r : $(fs1 ++ fs2)) : $fs2 = r --- _
(* *)

Here is a simple example of using it:

(* *)
type r1 = {A : int, B : float, C : string}
type r2 = {A : int, C : string}

val r1 : r1 = {A = 1, B = 2.0, C = "x"}
val r2 : r2 = projection r1
(* *)

Is that what you're looking to do? If so, you can cut out the named function and simply write [r1 --- _] in the last line (and in other related contexts).

_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur

Reply via email to