(no title)
volta83 | 4 years ago
No? Just make the type generic on the ordering.
Instead of MaxHeap(T), make it MaxHeap(T, Ord:(T,T)->bool) or something like that.
volta83 | 4 years ago
No? Just make the type generic on the ordering.
Instead of MaxHeap(T), make it MaxHeap(T, Ord:(T,T)->bool) or something like that.
curtisf|4 years ago
You need some way to enforce that the orderings are the _same_. A canonical ordering per type is how Haskell does it; dependent types are a more complicated alternative method.
remexre|4 years ago
> Instead of MaxHeap(T), make it MaxHeap(T, Ord:(T,T)->bool)
as saying the kind of MaxHeap should be, in Coq syntax, (forall (T : Set), (T -> T -> Bool)). I think this doesn't add any additional complexity vs DataKinds since the function doesn't need to be evaluable at typechecking time, just unified against at construction-time.
volta83|4 years ago
Just require that the Ord type is the same for all heaps ?
MaxHeap(MaxHeap(T, MyOrd), MyOrd) uses the same ordering, but MaxHeap(MaxHeap(T, Ord0), Ord1) does not.