Regarding (1), as far as I'm aware, the requirements are flexible, but the general requirement
is "published a paper at a good venue, either journal or conference". This implementation
was a hobby project of mine, but I was hoping to be able to justify spending more time on it
by finding a venue to publish it at.

As for (2), it's mostly expository. The techniques that I am interesting in showing off have no
known "simple" implementations as far as I'm aware -- scalar evolution, polyhedral
compilation, some kinds of inter-procedural analyses, SSA, etc. do not have simple 
implementations. Indeed, the goal is to show how to write optmising compilers. Most
compilers books teach one how to write a compiler, while there's a second course usually on
compiler optimisation. I don't know of readable, clean implementations of, say, the SSA
construction algorithm, or the scalar evolution analysis. 

Regarding nanopass: I think it makes a lot of sense as a philosophy as a way to architect
compilers. However, there are a lot of nice haskell-isms to write compilers which are 
scattered throughout the literature, as far as I can tell: Hoopl, trees that grow, much of
Matt might's work on abstracting abstract interpreters, Scrap-your-boilerplate style techniques,
equality saturation, etc. which are all fantastic, but I've never seen them under the
same umbrella.

So that's a sketch of the general story I want to tell :)

Thanks.
~Siddharth 


On Tue, Dec 25, 2018 at 7:30 PM Richard O'Keefe <raoknz@gmail.com> wrote:

Question 1:  what does your department require?  The first person to consult
is your supervisor.  Helping students figure out where to publish is definitely
part of a supervisor's job (speaking as a former supervisor of PhD students).

Question 2:  what is the TOPIC of your publication?  Since you are merely (!)
demonstrating known techniques on a toy language, does it really count as
work on compilers?   Is it software engineering?  Is it computer science
education?  Is the aim to develop something more maintainable?  What is the
quality metric by which your work should be judged?

Observation:  if you haven't already read the "Nanopass" paper,
you should do so now.  http://nanopass.org/ is the associated web site.
There is also a mailing list,
I think your aims are sufficiently close to theirs for you to have
interesting things to say to each other, despite you using Haskell and
them having used Scheme.