New member (and a project) introduction

63 views
Skip to first unread message

Ivan Kuraj

unread,
May 9, 2012, 8:28:09 AM5/9/12
to Scala IDE User
Hi all,

I am a new member of this group and I would like to just briefly
introduce myself (and my project, which is focusing on the Scala IDE).

My name is Ivan Kuraj and I am a second year computer science master
student at EPFL, with Foundations of Software as chosen
specialization.
In the next couple of months I will be working on a Google Summer of
Code project related to Scala IDE. The project is called "Smart Quick
Fixes for Scala IDE for Eclipse" and is about implementing a
'QuickFix' functionality for Scala development within the Eclipse. The
implemented mechanism should be used to provide automatic suggestions
for fixing compilation errors, code completion proposals, and
refactoring suggestions.

The basic ideas for the project are to implement some useful "quick
fixes" for Scala in Eclipse which include code modifications after a
compilation error (e.g. if a required type is List[T] but found is
List[List[T]], one suggestion could be to add a flatten method call to
an expression of type List[List[T]]), syntactic transformations which
are semantically equivalent (e.g. from foreach/map/flatmap to for-
yield construct transforms), utilization of the InSynth tool for code
synthesis (http://lara.epfl.ch/web2010/insynth) and investigate some
other possibilities which could prove interesting (e.g. scalagen tool
application).

Since such implementation requires close interaction with the Scala
and Scala IDE framework, a great point for the project would be to
cooperate with people which are involved in the core tasks of Scala
and the Scala IDE development, which includes people in this group.

It is my pleasure to be a part of this group. I am looking forward to
mutually beneficial discussions and cooperation within the community,
and finally my contribution to it.

Cheers,
Ivan

Richard O. Legendi

unread,
May 9, 2012, 9:15:43 AM5/9/12
to scala-i...@googlegroups.com, Ivan Kuraj
Hi Ivan, All,

I believe I should also introduce myself, I'm Richard Legendi, a PhD student at Eotvos Lorand University. I am another student accepted to Google Summer of Code with a project entitled "Integration of Specs2 with the Scala IDE".

My mentor is Eric Torreborre, and I already got some help from Mirco Dotta, Bill Venners, Chee Seng and others from the community.

I have created a draft Wiki page for the extended proposal, any comments are more than welcome (I will update it soon but there's quite a rush here because of the end of the semester)!

The ScalaTest team created a quite extensive framework that supports different testing platroms and IDEs, which is almost integrated into the core Scala IDE codebase too (see this pull request for details). The approach is to add Specs2 support to Scala IDE with the help of this framework.

I am pretty new to the Scala world, but I hope I will be able to add useful value to the project and to the community. It is going to be a real fun project, and it is indeed a great pleasure to be a part of this group!

All the best,
Richard
--
Richard O. Legendi
PhD Student
Eötvös Loránd University, Faculty of Informatics
Department of Programming Languages and Compilers
http://people.inf.elte.hu/legendi/

Mirco Dotta

unread,
May 9, 2012, 9:33:13 AM5/9/12
to scala-i...@googlegroups.com, Ivan Kuraj
It's so awesome to see the community growing, and all GSoC projects are brilliant!!

Can't wait to see them all in the next release of the Scala IDE ;-)

Keep up the good work and let's keep on rocking!

-- Mirco

---------------
Mirco Dotta
Typesafe - The software stack for applications that scale
PSE-D, 1015 Lausanne, Switzerland
Twitter: @mircodotta








Christopher Svanefalk

unread,
May 9, 2012, 10:06:54 AM5/9/12
to scala-i...@googlegroups.com, Ivan Kuraj
This is awesome, I really look forward to seeing it in future release :)
--
Best,

Christopher Svanefalk

Harshad RJ

unread,
May 11, 2012, 8:51:28 AM5/11/12
to scala-i...@googlegroups.com, Ivan Kuraj


On Wednesday, 9 May 2012 19:03:13 UTC+5:30, Mirco Dotta wrote:
It's so awesome to see the community growing, and all GSoC projects are brilliant!!

+1 Good luck to all the GSoC participants.

I don't know if this is the best place to suggest this, but, in the quick fix project it would be nice to have a feature that "implements all undefined methods in this class", for the error "class Child needs to be abstract since method xyz in class Parent is not defined".

-Harshad

Harshad RJ

unread,
May 11, 2012, 11:18:28 AM5/11/12
to scala-i...@googlegroups.com
Ivan, and all,


On Wednesday, 9 May 2012 17:58:09 UTC+5:30, Ivan Kuraj wrote:
utilization of the InSynth tool for code
synthesis (http://lara.epfl.ch/web2010/insynth)

I just had a look at InSynth and my mind is blown away. Having this integrated in the IDE would be seriously KICK_ASS.

While thinking and discussing about it with my friend, we visualised how this might work and what problems might come up.

One possible problem is that there could be too many suggestions in some cases. For example, let's say there are three functions of type (Int) => String, named f, g, h.

Now InSynth might generate many similar suggestions like this:
list.map(f).mkString(separator)
list.map(g).mkString(separator)
list.map(h).mkString(separator)

All of them have the same top level structure; they only differ in the function called for converting from integer to string. This kind of "explosion" of solution space might happen especially when there are combinations of choices possible. For example a goal like:
xyz( (Int) => String) + pqr( (Int) => String)

might have 9 different suggestions with combinations like (f,f), (f,g), (f,h), (g,f)... for the inner function calls.

And this is just scratching the surface. There could be so many choices at each level of the code fragment tree.

My suggested solution is to have a drill down approach to completion. The user should be able to choose the top level structure of the completion, and then drill down to specialise the template in the lower levels of the suggestion tree.  Doing this efficiently might require some support from InSynth as well.

Let me know if, and where, we can discuss this further. I am very excited by the possibilities this might open up!

Matt Russell

unread,
May 13, 2012, 1:01:22 PM5/13/12
to scala-i...@googlegroups.com, Ivan Kuraj
On Friday, May 11, 2012 1:51:28 PM UTC+1, Harshad RJ wrote:

I don't know if this is the best place to suggest this, but, in the quick fix project it would be nice to have a feature that "implements all undefined methods in this class", for the error "class Child needs to be abstract since method xyz in class Parent is not defined".

 I've also wanted this feature for ages! I'm actually thinking about working on that next, but I didn't want to step on Ivan's toes if he wanted a crack at this...

-- Matt

Ivan Kuraj

unread,
May 13, 2012, 10:03:58 PM5/13/12
to scala-i...@googlegroups.com
Hi Harshad,


On 05/11/2012 05:18 PM, Harshad RJ wrote:
Ivan, and all,

On Wednesday, 9 May 2012 17:58:09 UTC+5:30, Ivan Kuraj wrote:
utilization of the InSynth tool for code
synthesis (http://lara.epfl.ch/web2010/insynth)

I just had a look at InSynth and my mind is blown away. Having this integrated in the IDE would be seriously KICK_ASS.
Yes, as we discussed with Iulian, the feature (if implemented appropriately) could prove quite useful and bring great advantage to Scala IDE.


While thinking and discussing about it with my friend, we visualised how this might work and what problems might come up.

One possible problem is that there could be too many suggestions in some cases. For example, let's say there are three functions of type (Int) => String, named f, g, h.

Now InSynth might generate many similar suggestions like this:
list.map(f).mkString(separator)
list.map(g).mkString(separator)
list.map(h).mkString(separator)

All of them have the same top level structure; they only differ in the function called for converting from integer to string. This kind of "explosion" of solution space might happen especially when there are combinations of choices possible. For example a goal like:
xyz( (Int) => String) + pqr( (Int) => String)

might have 9 different suggestions with combinations like (f,f), (f,g), (f,h), (g,f)... for the inner function calls.
Yes, that is correct.
So far, the InSynth is instructed to synthesize an expression of a given type in a given context (e.g. cursor location). The symbols that are visible in the given context are associated with appropriate weights and these weights dictate the resolution procedure within InSynth (e.g. if declaration is closer to the cursor position, it will have lower weight i.e. higher priority).
Of course, these weights can be assigned according to user's preferences.


And this is just scratching the surface. There could be so many choices at each level of the code fragment tree.

My suggested solution is to have a drill down approach to completion. The user should be able to choose the top level structure of the completion, and then drill down to specialise the template in the lower levels of the suggestion tree.  Doing this efficiently might require some support from InSynth as well.
I actually find this idea quite interesting.
Maybe the plugin could be realized in such a way - with user suggestions and incremental InSynth calls.
I will try to discuss this with Iulian.


Let me know if, and where, we can discuss this further. I am very excited by the possibilities this might open up!
Thank you very much, I will have this in mind. I think that some help/advices will be crucial for succeeding in implementing this plugin and making it as much user-friendly as possible.
Currently we are working on the InSynth part - Scala code reconstruction (from InSynth proofs). Afterwards, this would be a direction that shuold be explored.

Ivan Kuraj

unread,
May 13, 2012, 10:07:54 PM5/13/12
to Harshad RJ, scala-i...@googlegroups.com
Thanks for the idea.
Maybe it would be useful to have a wiki page for this project in order to have a nice overview of the project and ideas...

Ivan Kuraj

unread,
May 13, 2012, 10:16:51 PM5/13/12
to Matt Russell, scala-i...@googlegroups.com
Hi Matt,

No problem at all.
Currently, we are involved into the integration with InSynth so if you happen to engage this feature soon, you can let me know.

Cheers,
Ivan
Reply all
Reply to author
Forward
0 new messages