Path: utzoo!utgpu!news-server.csri.toronto.edu!clyde.concordia.ca!uunet!samsung!munnari.oz.au!bunyip!brolga!uqcspe!batserver.cs.uq.oz.au!brendan From: brendan@batserver.cs.uq.oz.au (Brendan Mahony) Newsgroups: comp.lang.functional Subject: Re: What is strong typing? (Was: I like strong typing) Message-ID: <4493@uqcspe.cs.uq.oz.au> Date: 4 Aug 90 05:23:16 GMT References: <4387@uqcspe.cs.uq.oz.au> <1689@opal.tubopal.UUCP> <4424@uqcspe.cs.uq.oz.au> <3263@stl.stc.co.uk> <5450@castle.ed.ac.uk> Sender: news@uqcspe.cs.uq.oz.au Reply-To: brendan@batserver.cs.uq.oz.au Lines: 33 I think we need some definitions of terminaology. The word type is being badly abused in this discussion. The two sides essentially coming at it with two different definitions. How about we adopt the algebrist's terminology and go from there. Type: What you write after the colon in a variable declaration. This can be any set valued expression. Sort: The essential structure of an object. Essentially the largest homogeneous set containing the object. Essentially a cludge invented to make decidable "typing" algorithms. VERY context dependant. For example, whether 3 is INTEGER or REAL or whatever, depends on what you have decided as your basic sorts: an abitrary decision. Now having sorting information is simply not enough to ensure that partial functions will always be safely applied. You need to do some sort of exception handling. The question is whether the exception handling is done within the functional paradigm or whether you invent side-effects to handle such problems. To my mind the functional paradigm is either superior or it is not. If you have to introduce side-effects to handle anything then you might as well be programming in C from the start. -- Brendan Mahony | brendan@batserver.cs.uq.oz Department of Computer Science | heretic: someone who disgrees with you University of Queensland | about something neither of you knows Australia | anything about.