Browse thread
RE: Proposal for study: Add a categorical Initial type to ocaml
-
Manuel Fahndrich
- skaller
[
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: | 1999-10-15 (06:50) |
From: | skaller <skaller@m...> |
Subject: | Re: Proposal for study: Add a categorical Initial type to ocaml |
Manuel Fahndrich wrote: > > skaller wrote: > > [...] > > > Like I've been saying, with option you can turn it off, with > Obj.magic, the implementor ought to be damned sure he's doing things right. > But with these special "uninitialized value" sorts of things, people like > me who've gotten used to good type systems keep looking over their > shoulders because they're afraid it might turn around and bite > them in the butt. > >> How is this different from Obj.magic? Can't that bite you >> in the ass too? > >>> The difference is that in the first case of uninitialized values, they can >>> crop up anywhere in your program, since they get propagated. Using Obj.magic >>> within a special module such as resizable arrays confines the danger to that >>> module. The programmer can make sure (through extensive code reviews of a >>> finite piece of code) that outside the module, things cannot go awry. No. It is the other way around. Obj.magic values can get propagated, and so cause a problem. The special initial can NOT be propagated. Any attempt to copy such a value raises an exception. Ensuing this does not happen is also a matter of hiding within a modular abstraction, but at least an exception will help detect such localised errors. -- John Skaller, mailto:skaller@maxtal.com.au 1/10 Toxteth Rd Glebe NSW 2037 Australia homepage: http://www.maxtal.com.au/~skaller downloads: http://www.triode.net.au/~skaller