diff options
author | Jason Gross <jgross@mit.edu> | 2016-11-22 17:40:07 -0500 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2016-11-22 23:33:15 -0500 |
commit | 349faa231f8b2c94d3b5363fdfabac523c55e647 (patch) | |
tree | 8273d5ede8910baf7e29924b53ba13a3ddcc1796 /src/Util | |
parent | cd3a49ad51a599383f981c22f6fcca49fdd8d8e0 (diff) |
Add rhlist
Diffstat (limited to 'src/Util')
-rw-r--r-- | src/Util/HList.v | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/Util/HList.v b/src/Util/HList.v index 802ab1ed3..57507eeb5 100644 --- a/src/Util/HList.v +++ b/src/Util/HList.v @@ -20,6 +20,19 @@ Definition hlist {T n} (f : T -> Type) : forall (Ts : tuple T n), Type := | S n' => @hlist' T n' f end. +Fixpoint rhlist' T n (f : T -> Type) : rtuple' T n -> Type := + match n return rtuple' _ n -> Type with + | 0 => fun T => f T + | S n' => fun Ts => (f (fst Ts) * rhlist' T n' f (snd Ts))%type + end. +Global Arguments rhlist' {T n} f _. + +Definition rhlist {T n} (f : T -> Type) : forall (Ts : rtuple T n), Type := + match n return rtuple _ n -> Type with + | 0 => fun _ => unit + | S n' => @rhlist' T n' f + end. + Fixpoint const' {T n F xs} (v : forall x, F x) : @hlist' T n F xs := match n return forall xs, @hlist' T n F xs with | 0 => fun _ => v _ |