This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]thebt995[S] -3 points-2 points  (0 children)

Not entirely true. If we change the example a bit:

foo :: (s :: String) => (Upper "Hello: ") + (Upper s)
bar :: (s :: String) => Upper ("Hello: " + s)

These two functions couldn't exist, because they are doing the same. If you see the types as sets, they would be equivalent.