[Grace-core] Fwd: INCOMPLETE: gradual typing + structural typing + typecase

Kim Bruce kim at cs.pomona.edu
Tue Jul 2 08:17:41 PDT 2013


John,

We couldn't understand your example.  Can you explain it?

Kim


> Begin forwarded message:
> 
>> From: John Tang Boyland <boyland at pabst.cs.uwm.edu>
>> Subject: INCOMPLETE: gradual typing + structural typing + typecase
>> Date: July 2, 2013 4:12:58 PM GMT+02:00
>> To: kim at cs.pomona.edu
>> Cc: boyland at uwm.edu
>> Reply-To: boyland at uwm.edu
>> 
>> Dear Kim,
>>   Here's a start with a counter-example
>> whcih requires mutable fields:
>> 
>> Executive summary: Pick two of three:
>> 
>> - gradual typing
>> - structural (sub)types
>> - typecase
>> 
>> You can't have all three.
>> 
>> 
>> Definitions:
>> 
>> Gradual typing: The system can execute code in which some type
>> annotations on parameters/return types/names can be omitted, but
>> the execution result will be the same.
>> 
>> 
>> Structural object (sub)types: 
>> 
>> Types for objects consist of names and types of methods.
>> Type system has structural subtyping
>> Type system permits recursive types.
>> Type system may or may not permit union types.
>> 
>> 
>> typecase:
>> 
>> There is a capability to test types as runtime either with
>> something like Scala's "match", or even like Java's "instanceof"
>> 
>> 	  if (x instanceof T) {
>> 	     ...
>> 	  } else {
>> 	     ...
>> 	  }
>> 
>> 
>> 
>> Assuming we have mutable fields, I can provide a very simple
>> counter-example:
>> 
>>        type A = { a : A -> A }
>> 	type B = { b : B -> B }
>> 
>> 	val x = { var f : A = { def a(x) = x;
>>                                def b(y) = y; }
>>                  def get() = f;
>>                  def set(g) = f = g;
>>                }
>> 
>> then x has type { get : {} -> A, set : A -> {} }
>> so if we write:
>> 
>> 	if (x instanceof B) {
>> 	    print("1");
>> 	} else {
>> 	    print("2"):
>>        }
>> 
>> This code will print "2".
>> 
>> But if the annotation on "f" is erased, it can print "1".
>> 
>> John
> 
> _______________________________________________
> Grace-core mailing list
> Grace-core at cecs.pdx.edu
> https://mailhost.cecs.pdx.edu/mailman/listinfo/grace-core

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailhost.cecs.pdx.edu/pipermail/grace-core/attachments/20130702/ec30f30c/attachment-0001.html>


More information about the Grace-core mailing list