User loginNavigation 
UnsoundnessHi, I wonder if someone can help resolve the conflict described below. My system is an Algol like language which supports both functional and procedural code. (x=1,y=42.1) which has type (x:int, y:double) then this is a first class value, and the field names are projections: x (x=1,y=42.1) Since I have overloading there's no conflict with the same field name in some other record, (x=1,y=42.1) . x Now, to get rid of lvalues we introduce pointer types and variables so that in var xy = (x=1,y=42.1); &xy < (x=2,y=43.1); This is really cool because To assign to a component, we introduce a second overload for each projection that takes a pointer argument and returns a pointer: &xy . x < 3;
This works for other products as well (tuples, arrays and structs). So far so good, but now I have another feature called "compact linear types" The problem is .. compact linear type components are not addressable. And so the conflict: polymorphic pointer projections are unsound: proc f[T,U] (r: &(T,U)) (v:T)) { r.0 <v; } will not work if r is a pointer to a compact linear object. I can think of three solutions: (1) invent a new pointer type (destroys uniform pointer representation property) By skaller at 20170111 19:14  LtU Forum  previous forum topic  next forum topic  other blogs  5141 reads

Browse archivesActive forum topics 
Recent comments
38 min 33 sec ago
2 hours 13 min ago
3 hours 53 min ago
13 hours 51 min ago
13 hours 56 min ago
17 hours 59 min ago
18 hours 19 min ago
18 hours 54 min ago
19 hours 15 min ago
21 hours 50 min ago