Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


On 06/19/2012 11:27 AM, Bjoern Michaelsen wrote:
On Tue, Jun 19, 2012 at 10:42:39AM +0200, Stephan Bergmann wrote:
On 06/14/2012 01:58 PM, Bjoern Michaelsen wrote:
Actually writing down the static information can have a huge benefit
on maintainability.  (Even in static languages with type inference
like Haskell, where you would not actually need to write down type
signatures, it is common practice to nevertheless do so especially
for exported entities, for better documentation.)  Witness gbuild:
we do run into cases there where a macro is called with more
arguments than it expects, and at least I often need to decipher
definitions (or worse, use "monkey see, monkey do" copy/paste) to
figure out what arguments, and in what order, a macro takes.  I
would *love* to have a more statically typed machinery there...

The problem with gbuild is not that it is dynamic typed, but that it is weakly
typed (everything is a string).

While gbuild indeed only has a single basic data type (string), it does have the notion of functions (aka macros) that take arguments, so it does have more elaborate types, namely "string* -> string" (i.e., a macro takes an arbitrary number of string arguments and produces a single result string). What I was complaining about is that it does not have more specific types like "(string, string, string) -> string" (i.e., a macro that takes exactly three string arguments).

Literature often calls gbuild's "everything is a string" design "type-unsafe" rather than "weakly typed" (then again, nomenclature is certainly inconsistent in this field).

Testing an Any to be of a type able to provide what it
should at runtime is still a sane thing to do, and is done anyway most of the
time.

It is the minimum of what one needs to be done, I'd say. ;) (Or I maybe don't get what you want to say here exactly.) What I'm arguing is that having to resort to runtime checking is needed rarely, so I wouldn't make dynamic typing the default.

Stephan

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.