[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Rather, DSSLs increase modularity, productivity
Christopher, my question is not so much to explore the theoretical
value of Curl's system. But theory *is* useful because it helps us
understand things better. I've been trying to understand Curl's type
system for a while now and I must admit, it's hard to form a model of
it. I wonder if in fact the type system really is *defined* by the
compiler, as in, "if the compiler's combination of algorithms can
establish this type, then the expression has this type" -- where the
set of algorithms can change next week.
Re. my example, you made a claim about type checking that either (i) I
don't understand or (ii) seems to have been false. In the short
snippet I gave you, there is a type-annotated variable that (a) can
flag errors at run-time only, and (b) requires checks at run-time. As
I understand it, this clearly runs counter to your initial claims.
Ergo, the two options I see are (i) and (ii).
> Curl's type system is probably not all that interesting from a
> theoretical standpoint but it does allow the programmer to choose
> between dynamic and static programming styles as they see fit.
Again, I've heard this claim repeatedly now, and I still can't quite
tell what it means. Perhaps you could tell us how Curl provides this
choice in an *interesting* way? I thought it might be because the
compiler's smarts meant once a check was performed once in a body, it
flowed through to other values in the body. But your own example
rejects that possibility:
> {define-class A}
> {define-class B {inherits A} {method {b}}}
> let x:A = {B}
> let y = x
> {y.b} || ok
> {x.b} || error, no member 'b' defined in 'A'
Even though x has a type annotation, and x clearly flows to y, y does
not inherit the type annotation. That seems really strange. You (and
other Curl people) have said that Curl "infers" types in a few
specialized cases (and I do recall some examples of it over local
scopes back when I tried out Curl), but this is about as natural a
case as any that I could imagine! This would have been an at least
mildly interesting case of providing this choice.
Shriram
- References:
- Re: dual-language systems increase modularity
- Re: dual-language systems increase modularity
- From: Michael Vanier <mvanier@cs.caltech.edu>
- Rather, DSSLs increase modularity, productivity
- From: Mike Newhall <mike@newhall.net>
- Re: Rather, DSSLs increase modularity, productivity
- From: Michael Vanier <mvanier@cs.caltech.edu>
- Re: Rather, DSSLs increase modularity, productivity
- From: David Lichteblau <david@lichteblau.com>
- Re: Rather, DSSLs increase modularity, productivity
- From: Michael Vanier <mvanier@cs.caltech.edu>
- Re: Rather, DSSLs increase modularity, productivity
- From: Miles Egan <miles@caddr.com>
- Re: Rather, DSSLs increase modularity, productivity
- From: Daniel Weinreb <dlweinreb@rcn.com>
- Re: Rather, DSSLs increase modularity, productivity
- From: Miles Egan <miles@caddr.com>
- Re: Rather, DSSLs increase modularity, productivity
- From: Christopher Barber <cbarber@curl.com>
- Re: Rather, DSSLs increase modularity, productivity
- From: Shriram Krishnamurthi <sk@cs.brown.edu>
- Re: Rather, DSSLs increase modularity, productivity
- From: Christopher Barber <cbarber@curl.com>
- Re: Rather, DSSLs increase modularity, productivity
- From: Shriram Krishnamurthi <sk@cs.brown.edu>
- Re: Rather, DSSLs increase modularity, productivity
- From: Christopher Barber <cbarber@curl.com>