From: Nicolas C. <war...@fr...> - 2003-03-10 05:04:02
Attachments:
extlib.mli
|
Hi list ! Let's continue working together on ExtLib ! Here's the new version, adding some changes. Please report any missing function and any comments you could have on it. Nicolas Cannasse |
From: Michal M. <mal...@pl...> - 2003-03-10 08:25:18
|
On Mon, Mar 10, 2003 at 02:03:10PM +0900, Nicolas Cannasse wrote: > Hi list ! > > Let's continue working together on ExtLib ! > Here's the new version, adding some changes. > Please report any missing function and any comments you could have on it. Where did Option.val_of go? (maybe I'm missing something) -- : Michal Moskal ::::: malekith/at/pld-linux.org : GCS {C,UL}++++$ a? !tv : PLD Linux ::::::: Wroclaw University, CS Dept : {E-,w}-- {b++,e}>+++ h |
From: Nicolas C. <war...@fr...> - 2003-03-10 08:40:40
|
> > Hi list ! > > > > Let's continue working together on ExtLib ! > > Here's the new version, adding some changes. > > Please report any missing function and any comments you could have on it. > > Where did Option.val_of go? (maybe I'm missing something) > The problem I can see with val_of is the following : val_of should raise an exception when you're using it with None, and if you're using a good programming style, this is the kind of excecption you have to catch quite immediatly, so I think it's better to write : match x with | None -> do_something | Some v -> use_it than try use_it (val_of x) with NoneException -> do_something Other operations such as default or map have a fully defined behavior Nicolas Cannasse |
From: Amit D. <adubey@CoLi.Uni-SB.DE> - 2003-03-10 13:49:39
|
> > > > Hi list ! > > > > > > Let's continue working together on ExtLib ! > > > Here's the new version, adding some changes. > > > Please report any missing function and any comments you could have on > it. > > > > Where did Option.val_of go? (maybe I'm missing something) > > > > The problem I can see with val_of is the following : > val_of should raise an exception when you're using it with None, and if > you're using a good programming style, this is the kind of excecption you > have to catch quite immediatly, so I think it's better to write : > > match x with > | None -> do_something > | Some v -> use_it > > than > > try > use_it (val_of x) > with > NoneException -> do_something I disagree: val_of has two reasonable uses. First, it can be used with throwaway prototype programs, where simplicity and speed matter more than correctness. Second, it can be used where the semantics of the program dictate that the option has "Some" value. If you don't have a "Some" value in these cases, there often is nothing to do except bail out in the "with" clause, so you might as well catch the exception somewhere else higher up. I might add: if it's good enough for SML, it's good enough for me :) -Amit |
From: Blair Z. <bl...@or...> - 2003-03-10 15:21:29
|
Amit Dubey wrote: > > > I disagree: val_of has two reasonable uses. First, it can be > used with throwaway prototype programs, where simplicity and speed > matter more than correctness. Second, it can be used where the semantics > of the program dictate that the option has "Some" value. If you don't > have a "Some" value in these cases, there often is nothing to do > except bail out in the "with" clause, so you might as well catch > the exception somewhere else higher up. Agreed. I use Some values for my command line options which I verify before I use them, so I'd like to use them easily. Best, Blair -- Blair Zajac <bl...@or...> Plots of your system's performance - http://www.orcaware.com/orca/ |
From: Nicolas C. <war...@fr...> - 2003-03-11 01:48:51
|
> > I disagree: val_of has two reasonable uses. First, it can be > > used with throwaway prototype programs, where simplicity and speed > > matter more than correctness. Second, it can be used where the semantics > > of the program dictate that the option has "Some" value. If you don't > > have a "Some" value in these cases, there often is nothing to do > > except bail out in the "with" clause, so you might as well catch > > the exception somewhere else higher up. > > Agreed. I use Some values for my command line options which I verify > before I use them, so I'd like to use them easily. Okay, so perhaps somethink like : let val_of = function | None -> failwith "val_of" | Some x -> x is what you need ? But since I think some people will still want to catch the exception and use try...with instead of an easier pattern matching ( perhaps catching the exception to an upper level can be useful sometimes ), I would prefer : exception ValNone let val_of = function | None -> raise ValNone | Some x -> x Nicolas Cannasse |
From: Blair Z. <bl...@or...> - 2003-03-11 01:51:49
|
Nicolas Cannasse wrote: > > Okay, so perhaps somethink like : > > let val_of = function > | None -> failwith "val_of" > | Some x -> x > > is what you need ? > But since I think some people will still want to catch the exception and use > try...with instead of an easier pattern matching ( perhaps catching the > exception to an upper level can be useful sometimes ), I would prefer : > > exception ValNone > > let val_of = function > | None -> raise ValNone > | Some x -> x Sounds good to me. So this way if you see a ValNone exception, you know that you're not handling something that should be handled. Best, Blair -- Blair Zajac <bl...@or...> Plots of your system's performance - http://www.orcaware.com/orca/ |