[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2000-11-21 (09:36) |
From: | Pierre Weis <Pierre.Weis@i...> |
Subject: | Re: unwind-protect? |
> >From: Pierre Weis <Pierre.Weis@inria.fr> > > >Here, polymorphism, curryfication, and specialization are shining, > >since you juste have to add one in_* functional application before an > >actual call to any function f to obtain a specialized evaluation > >context for f. For instance: > > >let in_tmp f arg = in_directory "/tmp" f arg;; > > Actually, currying gets in the way in this case (as it often does). > If f takes two arguments, then "in_tmp f x y" will not work as > expected, but the type-checker will not find the error. > > -- Damien Right, you have to know that this in_* functions protect the last application of a function. Hence to apply a curried function you need parens to partially apply the function, as in_tmp (f x y) z. Alternatively, you can define your n-ary functions as having tupled arguments and write in_tmp f (x, y, z) (then the typechecker will find the ``arity'' errors). If you had functions with specific arity built-in in the langage, you would have to define multiple versions of the protect functions, one for each arity, which is not so appealing... Pierre Weis INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://cristal.inria.fr/~weis/