User loginNavigation 
Interesting? closure/object ideaI've been designing a language for my kids to use (goal: low barrier to entry, gentle learning curve up to serious power); one of the design choices has been to make closures easy to write. After reading Paul Graham's ILC 2003 talk, I started wondering how much I would need in the language to permit objects to be done as a library. Objects are equivalent to closures, but I wanted to leave room for a convenient syntax. (If nothing else, a lot of the system facilities I'll want to bind to, such as GUI toolkits, are OO, so being able to speak OO lowers the impedance mismatch.) So, the first thing I thought of was to break encapsulation (again, this was triggered by Graham's talk), to expose the bindings contained in a closure. So, if we do OK, so that can be used to make objects convenient. Then I started wondering about inheritance. After some false starts, I hit upon the idea of letting the righthand argument of "." be a general expression. So, for example, C2=C.{var double={x*=2}} creates class Point(x,y) { to moveBy(dx,dy) { x+=dx; y+=dy; } to abs() { sqrt(x*x+y*y); } }maps to: Point= {x,y: { var moveBy={dx,dy: x+=dx; y+=dy;}; var abs={sqrt(x*x+y*y);}; } } and: class PointWithFlip(x,y): Point(x,y) { to flip() { var tmp=x; x=y; y=tmp; } } maps to: PointWithFlip= {x,y: Point(x,y).{ var flip={var tmp=x; x=y; y=tmp;} } } That is, to create a I'm pretty happy with this idea; it should let me teach my kids closures, rather than objects as such, but without blocking them from doing OO should it be useful. And, of course, I suspect that being able to get an arbitrary expression evaluated within a closure will turn out to be pretty powerfulwith that, you could do things on the fly for which OO requires a subclass. And it doesn't distort the core language much, because you have to be able to construct closures inside closures anyway. Is this something that's been studied before? If it has, of course, I'd like to read about it before trying to implement it. By John Stracke at 20041011 13:15  LtU Forum  previous forum topic  next forum topic  other blogs  7073 reads

Browse archivesActive forum topics 
Recent comments
10 min 31 sec ago
19 min 45 sec ago
1 hour 19 min ago
1 hour 40 min ago
2 hours 51 min ago
11 hours 24 min ago
11 hours 57 min ago
12 hours 24 min ago
12 hours 46 min ago
12 hours 54 min ago