In search of inspiration

I'm currently following a course called 'Topics on Programming Languages', which has only one practical assignment: write a research paper.
There are three topics of which I was most interested in 'Partial Evaluation'. My problem is that there does not seem to be a lot of active
research in this area, or maybe I'm searching in the wrong places. However, I would like to ask the LtU users if they know of any interesting
problems involving partial evaluation. I have a month for the research and am to work in a group. A problem may be a practical one for which
I can analyse a solution in this month and maybe implement it as project afterwards.

I'm not asking for direct help, just pointers in the right direction and maybe some inspiration. Thx in advance.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Never work on a project that interests you....

... against a short time horizon. You are too likely to get distracted following your interest and end up running over your deadline. This is especially true when working in a group.

I agree

I agree ... although you could still follow up your interest in partial evaluation separately from the course.

Supercompilation

Supercompilation, an extension (and probably the first form of)
partial evaluation is becoming quite popular. Please search for
supercompiler or supercompilation. See for example,

http://refal.net/doc/turchin/dag/dag.html

If you read Russian, you may like an article about supercompilation in
the last chapter of

http://fprog.ru/2011/issue7/practice-fp-7-screen.pdf

(The first chapter is an excellent introduction to Refal).

Professor Robert Glueck in your university can tell you a lot about
supercompilers. He personally knew the inventor of supercompilers (who
has died recently).

Very cool!

(This is not really a reply targeted at Oleg, more of a general comment)

Supercompilation is a fascinating subject and there should be plenty of material available on it. I'm not sure what is included in the implementation part, but writing a supercompiler for a real compiler is probably a bit too much work for the time you have available. Making a supercompiler for a simple language should be doable in the given timeframe and a great learning experience though, good luck!

Thank you

Thank you for the nice pointers, will look into supercompilation :-).

Partial Evaluation - no idea what it is?

Well, you'ld first need to define what partial evaluation is, and where it may be applied. If you generalize it as outputting specialized operational semantics preserving code, then -of the top of my head- the following concrete instances can all be understood to be partial evaluation: Java and C#'s hot-spot compilation; C template preprocessing; meta-programming and program generation for, for instance, FFT algorithms; inlining and loop optimization - I was thinking loop unrolling more specifically; out-of-order combinatorial evaluation; etc.

That's the caveat, almost all forms of preprocessing and optimization can be understood to be partial evaluation - so you might want to narrow it down. Or, possibly, use the definition I provided and show where practical examples of partial evaluation arise.