<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7651.59">
<TITLE>RE: [erlang-questions] Why isn't erlang strongly typed?</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Jesper,<BR>
<BR>
I am glad you enjoyed the book as well.  Unfortunately, I cannot respond to your other points as I did not understand them.  Were you discussing the relationship between computer programing language typing systems and message passing vocabularies?<BR>
<BR>
Stu<BR>
<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: Jesper Louis Andersen [<A HREF="mailto:jesper.louis.andersen@gmail.com">mailto:jesper.louis.andersen@gmail.com</A>]<BR>
Sent: Fri 10/24/2008 2:17 AM<BR>
To: Stuart Bailey<BR>
Cc: Erlang (E-mail)<BR>
Subject: Re: [erlang-questions] Why isn't erlang strongly typed?<BR>
<BR>
2008/10/23 Stuart Bailey <sbailey@infoblox.com>:<BR>
> There is a very enjoyable and rigorous treatment of many of the issues<BR>
> raised on this thread in the book:<BR>
><BR>
> Types and Programming Languages by Benjamin C. Pierce.<BR>
<BR>
TAPL is a wonderful book indeed. However, I feel it is a bit misplaced<BR>
in this discussion. The problem is not the fact that you can (simply<BR>
type) the lambda calculus, but you need some more heavyweight<BR>
machinery to incorporate the message passing. The hard thing in type<BR>
theory is when you begin to combine the different ideas from TAPL into<BR>
one language. It is exactly this strain which makes Haskell and ML<BR>
impressive.<BR>
<BR>
The hardest thing to get a good type system for will be the message<BR>
passing semantics. Just building a big sum-type of all messages that<BR>
can be received is probably not enough: the type system will catch far<BR>
too few errors to be interesting. On the other hand, I've toyed with<BR>
the idea of using substructural types to prove that a message can be<BR>
passed by pointer rather than copied between 2 processes. That is, the<BR>
type of the sender proves that once the message is sent, it is the<BR>
last use.<BR>
<BR>
Food for thought: You can augment any language with a type system.<BR>
There is one type, TET (The Erlang Type), and all expressions have<BR>
type TET. It works, but the system is trivial. You can't *use* it for<BR>
anything. If you want the type system to provide you any help, it must<BR>
be designed cleverly. The design must be such that whenever you do<BR>
something wrong, there is a high chance of tripping the type system.<BR>
<BR>
<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>