Stefan
01/20/2020, 9:35 PMDoug Moen
01/20/2020, 10:22 PMDoug Moen
01/20/2020, 10:26 PMDoug Moen
01/20/2020, 10:31 PMcomma
01/20/2020, 10:46 PMcomma
01/20/2020, 10:47 PMDoug Moen
01/20/2020, 11:20 PMshalabh
01/21/2020, 12:18 AMWill
01/21/2020, 1:25 AMCould you give examples of useful programs that are inexpressible in a typed way without a hierarchy of universes? Even when doing pure mathematics (which demands much stronger logical foundations than programming), most of the time I can fix a single universe and work with (a tiny part of) what lives in it.Seems clear that Lexi is talking about the kinds of objects in day-to-day coding, not “infinity-categories”.
Ben Wheeler
01/21/2020, 4:06 AMStefan
01/21/2020, 7:15 AMKonrad Hinsen
01/21/2020, 7:36 AMKonrad Hinsen
01/21/2020, 8:16 AMshalabh
01/21/2020, 5:29 PMStatic Typing and Dynamic Typing are orthogonalStatic means types are attached to syntax expressions and dynamic means types are attached to runtime objects. So you can have both, technically. But a lot of static langs throw away much of the type definition during run time (they don't have to). In 'one world' languages like Smalltalk, types are attached to objects and it is considered dynamically typed. But what if you verify some type safety of a subset of the the expressions present in the system? Does that make it statically typed and stop being dynamically typed? Or does it end up being both? I also tweeted this: The static/dynamic debate requires a point in time such that all information supplied prior to the point is 'static code' and after is 'dynamic data'. This is wrong. At any point the system should be able to verify itself with all available information. The refinement (or dependent?) typing aspect that Konrad brought up is another important concern. This also leads to verification by contracts enforced at runtime for things that are 'outside' what the types express. Side node: why are contracts and types expressed so differently? Shouldn't there be one way to express a constraint and the system can then apply it 'as soon as possible or practical'? I like the verification aspect of static types, but also like the ability to run a part of the program while the whole program may be broken (i.e. doesn't type check) - for fast feedback. That's usually associated with dynamic typing. I guess what I'm trying to say is there are many aspects here that get lost when the debate is brought up as static vs dynamic. I think more interesting models will emerge when we see the system without that lens. For this reason, I try to stay out of static vs dynamic debates. But as you can see, I fail. 😄
Doug Moen
01/21/2020, 6:54 PMcomma
01/21/2020, 9:35 PMKonrad Hinsen
01/22/2020, 8:29 AM