Thank you for explaining. I was wondering if the same syntax could be used somehow (not in Haskell, in some theoretical language), I mean use an annotation to tell the compiler that a "type-tag" should be determined at compile time and not at runtime, otherwise -> error
So eg // Runtime tag, aka data constructor foo (Int n) = ... // Compile tag, aka type foo (>Int< n) = ... Might not make any sense... You're talking about O(big)... But wasn't the C language in some way succesful because on the hardware at that time other much nicer languages (e.g. LISP) were just way too slow? Or was this just O(n) times slower? IMHO: Shouldn't concepts that are conceptually the same (in this case, "giving meaning/adding constraints to bits of data" ) at runtime and compile time look very similar in the language? Most languages require completely different syntax and code when you want something to be lazy versus strict. Haskell doesn't, you can just add an annotation if you want it to be strict, no much rewriting is required. However, if I want to change a runtime data constructor definition (and code) into a compiletime type, then I can rewrite all of my code basically. That is not the case in SCHEME as far as I understand it. On Wed, 2008-01-16 at 22:20 +0100, Achim Schneider wrote: > Peter Verswyvelen <[EMAIL PROTECTED]> wrote: > > > I know nothing about theoretical computer science, but I was wondering > > if it possible to forget about types, and just keep the concept of > > data constructors, and have an analyzer determine correctness of the > > code and "staticness" of the data? > > > > Basically this is what SCHEME does no? Doesn't SCHEME have static > > whole program analyzers to remove the overhead of the "symbol tags" > > and check correctness of a program (Stalin, Petit-Scheme, ...)? > > > > What are to pros/contras? > > > Basically, it's a matter of taste, and how much of the checking can be > done at compile-time... which gets quite involved and O(big), if all > you have is (tagged) lists with type information. > > And, yes, Stalin manages to specialize a -> a functions to Int -> Int > to make numerical code as fast or faster than C, but so does GHC. > > Plus a GHC build may allow you to get a coffee, Stalin allows you to go > shopping, watch a movie and then go on vacation. > > That is because, in general, you can't forget about the type of your > data, you need it in some way or the other to do anything with it. > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe