I've been mulling over a language design issue which would be nicely solved if tuples behaved like a monoid. Is anyone aware of a language where tuples can be arbitrarily extended?

For example, if # is the tuple extension operator:

f :: a -> b -> a#b
f x y = x # y
f 1 "dog" ==> (1,"dog")
f (1,"dog") true ==> (1,"dog",true)
f () ("dog", true) ==> ("dog", true)

It seems that type inference is still possible here, though I'm not sure exactly how it would work. (ie, how do you unify types a*b*c and d#e?)

## Recent comments

2 days 4 hours ago

3 days 23 hours ago

2 weeks 1 day ago

3 weeks 4 hours ago

4 weeks 2 hours ago

5 weeks 5 days ago

6 weeks 1 day ago

7 weeks 1 day ago

7 weeks 5 days ago

7 weeks 5 days ago