Version française
Home     About     Download     Resources     Contact us    
Browse thread
Initializing default arguments
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Markus Mottl <mottl@m...>
Subject: Initializing default arguments
Hello,

I just wondered about ways to get rid of definitions like

  let rec foo_aux init = ...
  let foo = foo_aux []

using labels and default arguments. There I found a problem with functions
like:

  let rec tautology ?(:vs = variables t) t = ...

It is not possible to reference arguments (here: 't') from default
arguments if they appear later in the function definition.  It is clear
that this would be problematic if the other argument also had a default
value and if it referenced the first value again (recursion).

However, I believe it should be always ok to use non-default arguments
regardless of order, because they are always already initialized.

The following does not work as intended

  let rec tautology t ?(:vs = variables t) = ...

because I would have to place further arguments after it so that the
default argument can be erased (e.g. by adding '()'). Although the latter
requirement is not really painful it is at least not as convenient as it
could be.

Is it possible to remove this restriction or are there further problems I
did not foresee?

Best regards,
Markus Mottl

-- 
Markus Mottl, mottl@miss.wu-wien.ac.at, http://miss.wu-wien.ac.at/~mottl