Pluggable Types
A few ideas on type systems have been proposed by people who commented on my last entry.
The way to handle these issues is through the notion of pluggable types. Briefly, the idea is that the language is dynamically typed, and various type systems/static analyses can be added as plug-ins.
I wrote a brief position paper on this for a workshop last year. My website contains a presentation on the topic as well.
I'll go over the basics here. Most people are familiar with two approaches to types in programming:
There are endless religious arguments over the merits of one approach or the other. These debates are often pointless, because the split between the mandatory and dynamic type religions is a false dichotomy.
An alternative is to view typechecking as an optional tool, like lint. Now, I define an optional type system very strictly. There are two requirements:
1. The dynamic semantics must not depend on the type system.
2. Type annotations are syntactically optional.
The first requirement is the really important one. The second requirement is obvious to many people, but in fact it's not that significant. People often get hung up on things like type inference to address (2), when in fact that is exactly the wrong thing to focus on.
A few optional type systems have been built, but less than you think. The definition above excludes quite a few efforts. I built such as a system for Smalltalk. Phil Wadler did some work on Erlang.
If your language doesn't depend on the type system, you can in principle have multiple type systems that can check different properties; you can evolve these systems independently, as tools. The type systems can be viewed as plug-ins, hence the notion of pluggable types.
At this point, all the good or bad type checking ideas anyone cares to come up with are up to them to implement. People would not need to appeal to the keepers of the language to consider their favorite idea.
How to actually do pluggable types in a clean way is still subject to some research. I'm sure it can be done with good IDE support.
Read the position paper if you're interested.
Posted at 01:56PM Sep 10, 2005 by gbracha in Java | Comments[10]
And how do you describe the interactions between the types (or instances thereof)? No type is an island... so you need a meta-type system to express these relationships. In the words of Gary "Far Side" Larsen, "My brain's full".....
Posted by Geoff Arnold on September 11, 2005 at 06:40 PM PDT #
Posted by Nick Cameron on October 19, 2005 at 02:09 PM PDT #
Posted by James Noble on November 17, 2005 at 11:44 PM PST #
Posted by www on January 27, 2007 at 08:50 AM PST #
Posted by publish articles free on April 13, 2007 at 02:12 AM PDT #
Posted by search engine on April 13, 2007 at 02:26 AM PDT #
Posted by antibiotics online on April 13, 2007 at 02:44 AM PDT #
Posted by hair loss solution on April 13, 2007 at 03:26 AM PDT #
[url=http://www.online1.sh.cn]网站建设[/url]
[url=http://www.newline.sh.cn]网站建设[/url]
[url=http://www.marketnet.cn]虚拟主机[/url]
Posted by 网站建设 on August 23, 2007 at 06:59 PM PDT #
Lipitor a gastrointestinal lipase inhibitor used in the management of obesity in adult and adolescent patients age 12 and older. This medicine may be used during the weight loss phase or following weight loss to assist in weight management. http://lipitor.medication.lt
Zocor(simvastatin) is used along with an overall diet plan in order to reduce high blood cholesterol levels. Zocor can significantly reduce the amount of LDL ("bad") cholesterol in the blood while simultaneously raising the levels of HDL-C ("good") cholesterol. http://zocor.medication.lt
Posted by medications online on May 06, 2008 at 01:42 AM PDT #