type-theory

Haskell's algebraic data types

I'm trying to fully understand all of Haskell's concepts. In what ways are algebraic data types similar to generic types, e.g., in C# and Java? And how are they different? What's so algebraic about them anyway? I'm familiar with universal algebra and its rings and fields, but I only have a vague idea of how Haskell's types work. ...

How to infer coercions?

I would like to know how to infer coercions (a.k.a. implicit conversions) during type inference. I am using the type inference scheme described in Top Quality Type Error Messages by Bastiaan Heeren, but I'd assume that the general idea is probably the same in all Hindley-Milner-esque approaches. It seems like coercion could be treated a...

What is a type and effect system?

The Wikipedia artcile on Effect system is currently just a short stub and I've been wondering for a while as to what is an effect system. Are there any languages that have an effect system in addition to a type system? What would a possible (hypothetical) notation in a mainstream language, that you're familiar, with look like with e...

Understanding the type error: "expected signature Int*Int->Int but got Int*Int->Int"

The comments on Steve Yegge's post about server-side Javascript started discussing the merits of type systems in languages and this comment describes: ... examples from H-M style systems where you can get things like: expected signature Int*Int->Int but got Int*Int->Int Can you give an example of a function definition (or two?) ...

How to make these dynamically typed functions type-safe?

Is there any programming language (or type system) in which you could express the following Python-functions in a statically typed and type-safe way (without having to use casts, runtime-checks etc)? #1: # My function - What would its type be? def Apply(x): return x(x) # Example usage print Apply(lambda _: 42) #2: white = None...

What are "typing models"?

In Beyond Java(Section 2.2.9), Brute Tate claims that "typing model" is one of the problems of C++. What does that mean? ...

What type of lambda calculus would Lisp loosely be an example of?

I'm trying to get a better grip on how types come into play in lambda calculus. Admittedly, a lot of the type theory stuff is over my head. Lisp is a dynamically typed language, would that roughly correspond to untyped lambda calculus? Or is there some kind of "dynamically typed lambda calculus" that I'm unaware of? ...

What is the most easy way to get in advanced Type Theory.

Of course, by 'advanced' I mean here just something beyond what every programmer does know. I'm currently more-or-less comfortable with the basics and want to understand the most important, most elegant and most practically applicable achievements of modern type theory. I just do not have much time, desire and mental powers to study all...

A question about logic and the Curry-Howard correspondence.

Hi. Could you please explain me what is the basic connection between the fundamentals of logical programming and the phenomenon of syntactic similarity between type systems and conventional logic? ...

could someone explain the connection between type covariance/contravariance and category theory?

I am just starting to read about category theory, and would very much appreciate it if someone could explain the connection between CS contravariance/covariance and category theory. What would some example categories be (i.e. what are their objects/morphisms?)? Thanks in advance? ...

How does one prove the equivalence of two types and that a signature is singly-inhabited?

Anyone who has been following Tony Morris' blog and scala exercises, will know that these two type signatures are equivalent: trait MyOption1[A] { //this is a catamorphism def fold[B](some : A => B, none : => B) : B } And: trait MyOption2[A] { def map[B](f : A => B) : MyOption2[B] def getOrElse[B >: A](none : => B) : B } F...

Typing the Y combinator

http://muaddibspace.blogspot.com/2008/01/type-inference-for-simply-typed-lambda.html is a concise definition of the simply typed lambda calculus in Prolog. It looks okay, but then he purports to assign a type to the Y combinator... whereas in a very real sense the entire purpose of adding types to lambda calculus is to refuse to assign ...