What does weak static typing/strong dynamic typing mean? [closed]
For most of my career, I’ve been working with strong static typed languaged such as Java. For this reason, probably I’ve mixed up these two typing dimension (strongness and staticness). I came upon...
View ArticleUniversal and existential types
I’m trying to wrap my head around the concepts of universal and existential types but everywhere I look, I see either logical or operational intuitions (or implementations) (e.g. TAPL book by B....
View ArticleWhy is behavorial subtyping undecidable?
Liskov’s work in this area focused on behavioral subtyping, which besides the type system safety discussed in this article also requires that subtypes preserve all invariants guaranteed by the...
View ArticleIs there a “lambda cube” for interaction nets?
The lambda calculus is an untyped language that is often extended with logical frameworks such as the vertices of the λ-cube. Is there something similar to it, but for interaction nets? What about...
View ArticleCan type inference be classified in two groups: unification-based and...
I recently came across the 1995 paper Safety analysis versus type inference (pdf link) by Palsberg and Schartzbach that contrasts unification-based type inference and static analysis methods based on...
View ArticleWhy are semantics and type systems are so important?
I heard that semantics and type systems are very important for all programmers! But I why are they so important? I don’t understand. Maybe they are imortant only for theoreticians and compiler...
View ArticleDependent types over Church-encoded type in PTS/CoC
I’m experimenting with pure type systems in Barendregt’s lambda cube, specifically with the most powerfull one, the Calculus of Constructions. This system has sorts * and BOX. Just for the record,...
View ArticleFeatherweight Generic Java formalization in Coq
I’ve been searching for some nice formalization of FGJ (Featherweight Generic Java) in Coq. I am going to develop an extension of FGJ in Coq, so I hope there is an appropriate Coq implementation which...
View ArticleShould conditional logic be always coded via type system where possible?
I have a choice. Option 1: public class Sample { bool IsRelevant { get; set; } } Option 2: public class Sample { } public class RelevantSample : Sample { } Is there a clear well-known rule how to make...
View ArticleShould an interface covariant on T ever implement an interface invariant on it?
I was reading through the Hacklang docs on Collections, and came across this curious definition [paraphrased slightly]: interface KeyedIterable<Tk, Tv> ... interface ConstVector<+Tv>...
View Article