Humm... I have a small issue here: I need to get the result of the
partial application of a polymorphic function. Since variable are
generalized in Let it is generally advised to use eta expansions,
(i.e transform to a total application).
sometimes eta expansions just won't do the trick, consider:
let cntTag start=
let cnt=ref start in
fun v -> ((incr cnt;!cnt),v)
the partial application is not fully polymorphic
let tag1 = cntTag 1
has type
val tag1 : '_a -> int * '_a = <fun>
the eta expanded equivalent doesn't have the same semantic (it
actually seems even less useful):
let tag1 x= cntTag 1 x
Is there an elegant solution to that problem?
Cheers,
Till
--
http://till-varoquaux.blogspot.com/