caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: skaller <skaller@users.sourceforge.net>
To: caml-list <caml-list@inria.fr>
Subject: Re: [Caml-list] Re: OCAML Downcasting?
Date: 22 Sep 2004 12:26:04 +1000	[thread overview]
Message-ID: <1095819964.2580.1016.camel@pelican.wigram> (raw)
In-Reply-To: <87isa76z7g.fsf@qrnik.zagroda>

On Wed, 2004-09-22 at 08:20, Marcin 'Qrczak' Kowalczyk wrote:

> Attempts to avoid downcasts are often unmodular, they require to
> specify all possible variants in one place.

It makes no difference. You have do specify them all anyhow,
downcast or not.

> > Downcasting is a sign you're doing something wrong.
> 
> I disagree. It may be, or not. Just that OCaml doesn't support
> something doesn't imply that it must be evil.

The unstated assumption is that you want early error detection
and efficiency which static typing promises.

If you are willing to forgo these benefits -- and have
slow unreliable programs -- then you can use downcasts,
RTTI, or even code in Assmebler.

My typesetting tool Interscript uses Python for
dynamic message dispatch -- a certain class of
errors lead to exceptions being thrown which are
just ignored. This is intentional. The result
is sometimes bad output, so you have to actually
proofread the generated document to be sure
you got what you expected.

The reason is that (a) usually ignoring a
request to use a LaTeX feature in HTML is reasonable,
or vice versa. (b) termination of processing with
a weird error makes finding the problem harder
than generating bad output where you can actually
examine the consequences visually.

I.e. what I'm doing is even 'worse' than run
time error diagnosis -- I'm checking,
and then ignoring the fault :)

> Of course something is necessary to determine at runtime whether it's
> safe. I don't advocate unsafe constructs.

In the static typing world, 'safe' means errors are always
detected at compile time.

Clearly this is impossible in general, so safe is a
relative term. I consider Ocaml *unsafe* because
array bounds aren't checked at compile time.

Catching the error at run time is better than
not catching it -- but it still means the program
is unsafe.

Generally, we'd like to make programs safer where
possible. The problem with downcasting as a general
technique is that it bypasses static safety where
it is in fact desired and is available.

-- 
John Skaller, mailto:skaller@users.sf.net
voice: 061-2-9660-0850, 
snail: PO BOX 401 Glebe NSW 2037 Australia
Checkout the Felix programming language http://felix.sf.net



-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  reply	other threads:[~2004-09-22  2:26 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <ci7tcf$qqf$1@wolfberry.srv.cs.cmu.edu>
     [not found] ` <ci9ggm$i6p$1@wolfberry.srv.cs.cmu.edu>
2004-09-21  8:03   ` Jacques GARRIGUE
2004-09-21  8:43     ` Damien Pous
2004-09-21  9:15       ` Jacques GARRIGUE
2004-09-21  9:29         ` skaller
2004-09-21  9:49           ` Jacques GARRIGUE
2004-09-21  9:34         ` Stefano Zacchiroli
2004-09-21  9:56           ` Jacques GARRIGUE
2004-09-21 19:27     ` Michael Vanier
2004-09-21 21:38       ` Brian Hurt
2004-09-21 22:06         ` Michael Vanier
2004-09-21 22:32           ` Brian Hurt
2004-09-22  1:04           ` skaller
2004-09-21 22:20         ` Marcin 'Qrczak' Kowalczyk
2004-09-22  2:26           ` skaller [this message]
2004-09-22  6:31             ` Marcin 'Qrczak' Kowalczyk
2004-09-22  9:03               ` sejourne_kevin
2004-09-22 10:29               ` Richard Jones
2004-09-22 18:39                 ` Brian Hurt
2004-09-22 10:50               ` skaller
2004-09-22 12:03               ` Alain Frisch
2004-09-22 12:50               ` Cláudio Valente
2004-09-22 13:15                 ` Marcin 'Qrczak' Kowalczyk
2004-09-22 15:50                   ` skaller
2004-09-22 18:42               ` Brian Hurt
2004-09-22 18:44                 ` Marcin 'Qrczak' Kowalczyk
2004-09-22 19:18                   ` Brian Hurt
2004-09-22  0:50         ` skaller
2004-09-22  1:30       ` Jacques GARRIGUE
2004-09-22  2:59         ` skaller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1095819964.2580.1016.camel@pelican.wigram \
    --to=skaller@users.sourceforge.net \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).