Hi!
I really like what Roel did about his type inferencer. I coded a bit to integrate them within a code browser. Just open a class and browse some code. http://www.iam.unibe.ch/~bergel/RoelTyper.zip
Any comment?
Cheers, Alexandre
On Sep 29, 2005, at 12:52 PM, Alexandre Bergel wrote:
Hi!
I really like what Roel did about his type inferencer. I coded a bit to integrate them within a code browser. Just open a class and browse some code. http://www.iam.unibe.ch/~bergel/RoelTyper.zip
Any comment?
Cool. I found the instance variables listing in the comment pane - is there anything else I missed?
It's a lot of fun to browse through and see what types it picks up. For collections, it often shows something like:
<ArrayedCollection Bag Heap Interval LinkedList MappedCollection OrderedCollection Set SkipList WeakRegistry>
It's a little bit surprising that there's no common superclass of all of these that it could have found. Of course, that seems to place too much weight on inheritance - it almost makes me want to define some kind of first class abstract protocol (trait?) that captures what all of those have in common, so the type inferencer could just list that...
I have no idea if this is feasible performance-wise, but it would be great to integrate this with Shout so that you got real-time feedback about whether the sends you're doing to instance variables are consistent with their currently inferred type.
Avi
<ArrayedCollection Bag Heap Interval LinkedList MappedCollection OrderedCollection Set SkipList WeakRegistry>
It's a little bit surprising that there's no common superclass of all of these that it could have found. Of course, that seems to place too much weight on inheritance - it almost makes me want to define some kind of first class abstract protocol (trait?) that captures what all of those have in common, so the type inferencer could just list that...
findLeastGeneralClass: aCollection | remainingClasses currentClass | remainingClasses := aCollection asOrderedCollection. currentClass := remainingClasses removeFirst. [ remainingClasses isEmpty ] whileFalse: [ [ remainingClasses first includesBehavior: currentClass ] whileFalse: [ currentClass := currentClass superclass ]. remainingClasses removeFirst ]. ^currentClass
-- Lukas Renggli http://www.lukas-renggli.ch
On Sep 29, 2005, at 10:32 PM, Avi Bryant wrote:
On Sep 29, 2005, at 12:52 PM, Alexandre Bergel wrote:
Hi!
I really like what Roel did about his type inferencer. I coded a bit to integrate them within a code browser. Just open a class and browse some code. http://www.iam.unibe.ch/~bergel/RoelTyper.zip
Any comment?
Cool. I found the instance variables listing in the comment pane - is there anything else I missed?
It's a lot of fun to browse through and see what types it picks up. For collections, it often shows something like:
<ArrayedCollection Bag Heap Interval LinkedList MappedCollection OrderedCollection Set SkipList WeakRegistry>
It's a little bit surprising that there's no common superclass of all of these that it could have found. Of course, that seems to place too much weight on inheritance - it almost makes me want to define some kind of first class abstract protocol (trait?) that captures what all of those have in common, so the type inferencer could just list that...
I have no idea if this is feasible performance-wise, but it would be great to integrate this with Shout so that you got real-time feedback about whether the sends you're doing to instance variables are consistent with their currently inferred type.
Yes, and completion as well ... we were just talking with Stef this afternoon about all this neat pieces of code we have and that we could bind together.
In services I use a modified version of the RB's parser that can deal with some of the syntax errors, so it could possibly be used in this context, and hence form a nice basis of an integration of syntax highlighting and completion.
Romain
Avi
-- Romain Robbes http://www.inf.unisi.ch/~robbes/
Yes, and completion as well ... we were just talking with Stef this afternoon about all this neat pieces of code we have and that we could bind together.
In services I use a modified version of the RB's parser that can deal with some of the syntax errors, so it could possibly be used in this context, and hence form a nice basis of an integration of syntax highlighting and completion.
Romain
Yes
StarBrowser smartcategory Whisker multiple methods eCompletion Shout SmallBrother (to spy what the programmer is doing in VW we could port that to Squeak) EventNotification RoelTyper
I think that "Living IDEs: a New generation of Programmer- aware Environments"
could be a really interesting PhD topic
I always thought with roel that we do not use the fact that we have an image. I could browse a class and the system would remember how I browsed it the last time and how all the other programmer browsed it.
Then I could have browser that would reveal classes gradually (there were a lot of discussion long time ago) We thought about the idea of the King Class = focus of attention and Court all the contributing classes and these classes would be privileged when browsing.... If you want to give a try, I'm sure that we can write papers and experiments on that :)
Stef
Seems nobody likes MorphicWrappers. I have this working with some faults, but what works is amazing
Edgar
___________________________________________________________ 1GB gratis, Antivirus y Antispam Correo Yahoo!, el mejor correo web del mundo http://correo.yahoo.com.ar
karl puso en su mail :
Where can download this ? Karl
I have working on SqueakLight, but I tell you what last version port by Francisco Garau is on SqueakMap. This version was labelled as 3.6 compatible, but you could have full working on 3.7 and 3.8 with minor glitches, as you can't grab buttons on flaps. But direct access to Morph and related to recent threads, as direct access to classes typed "on the air', works fine. I put a old MorphicWrappers.002.pr what could load in Squeak3.9a-6693, you see awful fonts, as many was changed , but function is fine. This is on ftp://elpelotero@200-122-97-17.cab.prima.net.ar/ password: elpelotero and I let the Mac on about ten more hours today and tomorrow start to 09:00 GMT again.
Cheers.
Edgar
___________________________________________________________ 1GB gratis, Antivirus y Antispam Correo Yahoo!, el mejor correo web del mundo http://correo.yahoo.com.ar
Cool. I found the instance variables listing in the comment pane - is there anything else I missed?
It's a lot of fun to browse through and see what types it picks up. For collections, it often shows something like:
<ArrayedCollection Bag Heap Interval LinkedList MappedCollection OrderedCollection Set SkipList WeakRegistry>
It's a little bit surprising that there's no common superclass of all of these that it could have found. Of course, that seems to place too much weight on inheritance - it almost makes me want to define some kind of first class abstract protocol (trait?) that captures what all of those have in common, so the type inferencer could just list that...
I have no idea if this is feasible performance-wise, but it would be great to integrate this with Shout so that you got real-time feedback about whether the sends you're doing to instance variables are consistent with their currently inferred type.
and eCompletion!!! Roel could type the complete visualworks image in really no time. So I guess that this is possible. He worked to make it really fast. He told me that caching is slower than his analysis :)
Stef
Avi
squeak-dev@lists.squeakfoundation.org