On Thu, Sep 19, 2013 at 11:29 AM, Goswin von Brederlow <goswin-v-b@web.de> wrote:

What about this code?

# let foo y ~x = 2 * x + y;;
val foo : int -> x:int -> int = <fun>
# let bar ~x = foo x;;
val bar : x:int -> x:int -> int = <fun>
# let x = 1;;
val x : int = 1
# bar ~x ~x;;
- : int = 3
# bar ~x:1 ~x:2;;
- : int = 5

Other than being confusing there doesn't seem to be anything wrong with
a duplicate label. It just requires you to apply the ~x in order.

I believe it is not a type system-level feature wish, but a syntax of definition-level feature wish.