GADT example
Add constraint on Get so that r ~ SetResult r f (GetResult r f)