I was trying to implement something and ran into issues of combinatorial
arguments. I trying using concepts to automate this process, but it didn't
quite work out. Anyway here's some sample code to show what I mean.
type
Foo = concept f
proc bar(baz: Foo, qux: Foo) = #impl
Run
The issue is this requires both arguments to be the same type even if they both
match the concept, but if I do
proc bar(baz: Foo, qux: distinct Foo) = #impl
Run
Then it requires both arguments to be different types, they can't be the same
type.
Basically I would like there to be a way to express both of these at once.