Mercurial > meta
view record.ur @ 21:e7d64ea0f922
Variant.weaken, mp, and mapR
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Thu, 05 Jan 2012 18:04:04 -0500 |
parents | 6cd839818393 |
children | f55f66c6fdee |
line wrap: on
line source
fun numFields [r ::: {Type}] (fl : folder r) (r : $r) : int = @fold [fn _ => int] (fn [nm ::_] [u ::_] [r ::_] [[nm] ~ r] acc => acc+1) 0 fl fun mem [a ::: Type] [ns ::: {Unit}] (_ : eq a) (fl : folder ns) (x : a) (r : $(mapU a ns)) : bool = @foldUR [a] [fn _ => bool] (fn [nm ::_] [r ::_] [[nm] ~ r] y acc => acc || x = y) False fl r fun equal [ts ::: {Type}] (eqs : $(map eq ts)) (fl : folder ts) (r1 : $ts) (r2 : $ts) : bool = @foldR3 [eq] [ident] [ident] [fn _ => bool] (fn [nm ::_] [t ::_] [r ::_] [[nm] ~ r] isEq x y acc => acc && @eq isEq x y) True fl eqs r1 r2