[Ur] Struggling to figure out mapping of record

Simon Van Casteren simon.van.casteren at gmail.com
Sat Aug 18 08:43:30 EDT 2018


Hi everybody, I'm struggling to get my validation functions the way I
really like them. What I would like to do is start from a record of input
fields that have a certain type, eg:

{Age: option float, FirstName: string}

I then have a function that will validate the values of this record, and
either return an error in the form of a string, or a type b, for every
field.

{Age: option float -> either string int, FirstName: string -> either string
string}

(either is just a sum type with two values Left and Right like in Haskell,
I should make a PR to get this into the stdlib, but that's not relevant
now).

How can I now apply this record of functions to this record of values?
Output should be of the type:

{Age: either string int, FirstName: either string string}

I feel Ur should be able to do it but I can't figure it out. I keep going
back to Top.map2, but there the "to" and "from" types should be type level
functions from a certain K to a and b, but my records are monomorphic and
don't really have any relation between them except for the record of
mapping functions. (Not sure if all my terminology is correct here but I
hope you understand what I mean)

Any help much appreciated!

Simon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.impredicative.com/pipermail/ur/attachments/20180818/bc5b1882/attachment.html>


More information about the Ur mailing list