Doctoral defense approaching, dissertation publicly available

I will be defending my doctoral dissertation “Evidence-based programming language design: a philosophical and methodological exploration” on December 4, 2015 at noon, in the Seminarium building, auditorium S212, of the University of Jyväskylä. My opponent will be Professor Lutz Prechelt (Freie Universität Berlin, Germany), and the custos is Professor Tommi Kärkkäinen (University of Jyväskylä).

The defense is public; anyone may come. Dress code for the audience is whatever one would wear to any lecture or regular academic activity at the university (no formal dress required). There is a Facebook event page.

The dissertation manuscript was reviewed (for a permission to publish and defend) by Professor Matthias Felleisen (Northeastern University, USA) and Professor Andreas Stefik (University of Nevada, Las Vegas, USA). The dissertation incorporates most of my licentiate thesis, which was examined last year by Doctor Stefan Hanenberg (University of Duisburg-Essen, Germany) and Professor Stein Krogdahl (University of Oslo, Norway).

The dissertation is now publicly available as a PDF.

The dissertation mentions Haskell in several places, although that is not its main focus.

ABSTRACT

Kaijanaho, Antti-Juhani
Evidence-Based Programming Language Design. A Philosophical and Methodological Exploration.
Jyväskylä: University of Jyväskylä, 2015, 256 p.
(Jyväskylä Studies in Computing
ISSN 1456-5390; 222)
ISBN 978-951-39-6387-3 (nid.)
ISBN 978-951-39-6388-0 (PDF)
Finnish summary
Diss.

Background: Programming language design is not usually informed by empirical studies. In other fields similar problems have inspired an evidence-based paradigm of practice. Such a paradigm is practically inevitable in language design, as well. Aims: The content of evidence-based programming design (EB-PLD) is explored, as is the concept of evidence in general. Additionally, the extent of evidence potentially useful for EB-PLD is mapped, and the appropriateness of Cohen’s kappa for evaluating coder agreement in a secondary study is evaluated. Method: Philosophical analysis and explication are used to clarify the unclear. A systematic mapping study was conducted to map out the existing body of evidence. Results: Evidence is a report of observations that affects the strength of an argument. There is some but not much evidence. EB-PLD is a five-step process for resolving uncertainty about design problems. Cohen’s kappa is inappropriate for coder agreement evaluation in systematic secondary studies. Conclusions: Coder agreement evaluation should use Scott’s pi, Fleiss’ kappa, or Krippendorff’s alpha. EB-PLD is worthy of further research, although its usefulness was out of scope here.

Keywords: programming languages, programming language design, evidence-based paradigm, philosophical analysis, evidence, systematic mapping study, coder agreement analysis

Näyttöön perustuvan ohjelmointikielten suunnittelun tueksi sopivan empiirisen tutkimusnäytön laajuus: Järjestelmällinen kirjallisuuskartoitus

(Tämä on englanninkielisen lisensiaatintutkimukseni suomenkielinen yhteenveto.)

Ohjelmointikieliä on tuhansittain, ja niitä luodaan lisää (ja olemassa olevia kieliä muokataan) jatkuvasti. Tämä luonti- ja kehitystyö perustuu yleensä laatijoiden ja kehittäjien omaan tyylitajuun, henkilökohtaisiin mieltymyksiin sekä teoreettiseen tietämykseen. Empiiristä tutkimustietoa ohjelmointikielten ja niiden muutosten hyödyllisyydestä ei käytetä juuri lainkaan. Ohjelmoinnin psykologian tutkimus on kuitenkin yli neljäkymmentä vuotta vanha tieteenala, ja siitä luulisi olevan hyötyä ohjelmointikielten laatijoille ja kehittäjille.

Tuleville lääkäreille on jo useampi vuosikymmen opetettu näyttöön perustuvan lääketieteen mallia: jos lääkäri ei ole varma, miten tulisi toimia jonkin tietyn potilaan ongelman kanssa, ensiksi hän muotoilee vastattavissa olevan kysymyksen; toiseksi hän etsii tutkimuskirjallisuudesta ja siihen perustuvista toisiolähteistä tutkimusnäyttöä, joka vastaa kyseiseen kysymykseen; kolmanneksi hän arvioi tuon näytön luotettavuuden; neljänneksi hän soveltaa tuon tutkimusnäytön antamaa vastausta potilaansa ongelmaan; ja viidenneksi arvioi omaa suoriutumistaan tässä prosessissa. Tämä lääketieteestä peräisin oleva toimintamalli on sittemmin otettu soveltuvin osin käyttöön myös monilla muilla asiantuntijuuteen perustuvilla aloilla, muiden muassa ohjelmistotekniikassa.

Tämän lisensiaatintyöni lähtökohtana oli näyttöön perustuvan ohjelmointikielten suunnittelun idea. Työn tarkoituksena oli selvittää, kuinka paljon sellaista empiiristä tutkimusnäyttöä on olemassa, josta voisi olla hyötyä ohjelmointikielten suunnittelijoille. Keskityin tarkastelemaan tutkimuksia, jotka pyrkivät vertailemaan kahden tai useamman vaihtoehtoisen suunnitteluratkaisun hyödyllisyyttä ohjelmoijan näkökulmasta. Halusin selvittää lisäksi, mitä tällaisia suunnitteluratkaisuja on tutkittu tällä tavalla, millä eri tavoin hyödyllisyys on ymmärretty tällaisissa tutkimuksissa, sekä mitä tutkimusmenetelmiä tällaisissa tutkimuksissa on käytetty.

Tämä lisensiaatintyöni on kirjallisuuteen perustuva tutkimus, niin sanottu toisiotutkimus, jossa aineistona käytetään ensiötutkimuksia eli tutkimuksia, joissa tutkijat ovat itse välittömästi havainnoineet tutkittavaa ilmiötä. Useimmat järjestelmälliset toisiotutkimukset kuuluvat kahteen pääluokkaan. Järjestelmälliset katsaukset pyrkivät vastaamaan käytännön toiminnan kannalta oleellisiin, hyvin tarkkarajaisiin kysymyksiin. Järjestelmälliset kartoitukset puolestaan pyrkivät hahmottamaan tutkimuskirjallisuuden yleisen tilanteen jollakin tutkimusalalla. Tämä työni on selkeästi kartoitus.

Olen taustoittamisen tarkoituksessa käsitellyt tässä työssäni ohjelmointikielten erilaisia luokitteluja (kielten tasot, sukupolvet ja paradigmat), kielten käsitteellistä rakennetta, tiettyjen suunnitteluratkaisujen historiaa sekä ohjelmointikielten kehitystyön historiaa. Lisäksi olen työssäni suhteellisen laajasti referoinut ohjelmistotekniikan alalla julkaistuja systemaattisten kirjallisuuskartoitusten tutkimusmetodologisia toimintaohjeita. Työni sisältää myös ohjelmointikielen käsitteen analyysiä sekä näytön käsitteen tietoteoreettista pohdintaa.

Itse kartoituksen lähdemateriaalin etsin useita eri hakumenetelmiä käyttäen. Ensiksi selasin läpi eräiden kansainvälisten tutkimuslehtien ja konferenssijulkaisujen kaikki numerot (käyttäen hyväksi tietoverkossa julkaistuja sisällysluetteloja ja abstrakteja). Seuraavaksi tein avainsanahakuja useissa kansainvälisesti tunnetuissa tutkimuskirjallisuustietokannoissa. Lopuksi etsin lisälähteitä kaikkien edellisillä hauilla löytyneiden kartoitukseeni hyväksymieni tutkimusjulkaisuiden lähdeluetteloista sekä eräiden tietokantojen luetteloista näihin julkaisuihin viittaavista julkaisuista; tätä kutsun jatkossa lumipallohauksi.

Hauilla löytyneet julkaisut kävin läpi kolmessa kierroksessa. Ensimmäisellä kierroksella hylkäsin tutkimukseni kannalta ilmiselvästi epäolennaiset julkaisut. Toisella kierroksella hylkäsin ne julkaisut, joiden epäolennaisuudesta olin vakuuttunut. Näillä kahdella kierroksella päätökseni perustuivat tietoverkosta saataviin metatietoihin. Kolmatta kierrosta varten hankin jokaisesta vielä jäljellä olevasta julkaisusta sen koko tekstisisällön, joko paperilla tai sähköisesti. Tällä kierroksella hylkäsin ne, joiden epäolennaisuudesta vakuutuin; loput otin mukaan tähän tutkimukseen. Valintojen oikeellisuuden selvittämiseksi lisensiaatintyöni ohjaajat tekivät kukin pienelle osalle löytyneistä julkaisuista satunnaisotannalla itsenäisen hyväksymis- tai hylkäyspäätöksen. Olimme pääosin samaa mieltä; erimielisyydet ratkaisimme lopullisesti konsensuspäätöksellä.

Mukaan kartoitukseen otin ne ensiö- ja toisiotutkimukset, jotka pyrkivät selvittämään jonkin ohjelmointikielten suunnitteluratkaisun hyödyllisyyden ohjelmoijan näkökulmasta, joista oli saatavilla täydellinen, viimeistään vuonna 2012 julkaistu tutkimusraportti englannin, suomen tai ruotsin kielellä ja jotka esittivät empiiristä tutkimusnäyttöä väitteittensä tueksi.

Selaamalla löytyi 1515 ensimmäisen kierroksen hyväksymää julkaisua, avainsanahauilla löytyi 248 lisää ja lumipallohaulla vielä 293 julkaisua näiden lisäksi. Toisella kierroksella jäljelle jäi 1045 selaamalla löytynyttä, 151 avainsanahauilla löytynyttä ja 223 lumipallohaun löytämää. Lopullisesti kartoitukseen hyväksyttiin 180 tutkimusjulkaisua, jotka raportoivat 137 ensiötutkimusta. Toisiotutkimuksia julkaisuissa raportoitiin 19. Varsinaisessa kartoituksessa olen käsitellyt vain ensiötutkimuksia.

Tein tutkimukseen mukaan otetuista tutkimusjulkaisuista temaattisen synteesin seuraavasti. Ensiksi luin kaikki mukaan otetut julkaisut läpi. Seuraavaksi valitsin jokaisesta suoria lainauksia, jotka liittyivät tutkimukseni aiheeseen. Tämän jälkeen koodasin lainaukset (eli annoin niille kuvaavia avainsanoja). Koodien perusteella etsin aineistosta esille nousevia, tutkimukseni aiheen kannalta merkittäviä teemoja, joista lopulta rakensin temaattisen mallin. Koodauksen oikeellisuuden arvioimiseksi yksi ohjaajistani koodasi muutaman artikkelin uudestaan; ratkaisumme erosivat jonkin verran toisistaan.

Temaattinen mallini jakoi kartoitukseen mukaan ottamani ensiötutkimukset kahteen luokkaan. Reuna-alueeseen kuuluivat tutkimukset, jotka eivät olleet kovin oleellisia kartoitukseni kannalta: ne vain vertailivat kieliä tai kieliluokkia toisiinsa taikka käyttivät yksittäisiä olemassa olevia ohjelmia tai ohjelmointitehtäviä jonkin teknologian käyttökelpoisuuden osoittamiseen. Loput 65 tutkimusta muodostivat ytimen, joka puolestaan jakautui sipulimaisesti useaan kerrokseen käytetyn tutkimusmenetelmän mukaan.

Ydinsipulin uloin kerros koostui tutkimuksista, joissa ei käytetty minkäänlaista koeasetelmaa; tyypillisesti kyse oli määrällisestä havainnoivasta tutkimuksesta taikka laadullisesta tutkimuksesta. Seuraavaksi uloin kerros koostui kokeista eli tutkimuksista, joissa tutkijat ovat pyrkineet vaikuttamaan tutkimustilanteeseen siten, että tästä aiheutuva muutos tulosmittareissa on havaittavissa. Seuraava, toiseksi sisin, kerros koostui kontrolloiduista kokeista eli tutkimuksista, joissa koehenkilöt tai muut tutkimuskohteet on jaettu ryhmiin sen mukaan, mitä tutkimuksessa mukana olevaa suunnitteluratkaisua he käyttävät tai missä järjestyksessä he käyttävät mukana olevia suunnitteluratkaisua. Ydinsipulin sisin kerros eli sydän koostui satunnaistetuista kontrolloiduista kokeista eli kontrolloiduista kokeista, joissa koehenkilöt tai muut tutkimuskohteet on jaettu ryhmiin jollakin satunnaisprosessilla. Sipulin sydämessä oli 22 tutkimusta.

Tutkimusten julkaisuajoista oli havaittavissa mielenkiintoinen ilmiö. Vanhin kartoituksessa mukana ollut julkaisu oli julkaistu 1973 ja uusin vuonna 2012 (koska uudempia en ottanut kartoitukseen mukaan). Aina vuosituhannen vaihteen paikkeille asti tutkimuksia julkaistiin suunnilleen saman verran joka vuosi, mutta määrät nousivat vuosituhannen vaihteen paikkeilla ja uudestaan dramaattisesti vuoden 2008 paikkeilla. Vastaava ilmiö on havaittavissa, joskin heikompana, kaikissa ydinsipulin kerroksissa.

Kartoituksessa havaitsin, että ohjelmointikielten suunnitteluratkaisujen hyödyllisyyttä on tutkittu jonkin verran: kaiken kaikkiaan tutkimuksia löytyi 141 ja satunnaistettuja kontrolloituja kokeita 22. Eniten on tutkittu eri tapoja ilmaista suorituksen haarautumista (11 koetta ytimessä, joista 8 kontrolloituja, joista 3 satunnaistettuja; vanhin tutkimus julkaistu 1973), valintaa staattisen ja dynaamisen tyypityksen välillä (6 tutkimusta ytimessä, joista 5 kontrolloituja kokeita, joista 4 satunnaistettuja; vanhin tutkimus julkaistu 2009), sekä eri tapoja ilmaista silmukkarakenne (5 tutkimusta ytimessä, joista 4 kokeita, joista 3 kontrolloituja ja yksi satunnaistettu; vanhin tutkimus julkaistu 1978). Hyödyllisyyttä on tutkimuksissa tarkasteltu pääasiassa virhealttiuden, ohjelmien ymmärrettävyyden sekä ohjelmointityön työläyden kautta.

Tutkimusmenetelmistä suosituin ytimessä oli (määrällinen) koe, jota käytti 41 tutkimusta. Toiseksi suosituin 11 tutkimuksella oli tutkimusasetelma, jossa olemassa olevia ohjelmia muokattiin käyttämään uutta ohjelmointikielen suunnitteluratkaisua hyväkseen. Kolmanneksi suosituin 8 tutkimuksella oli ohjelmistokorpuksen analyysi. Ytimessä käytettiin lisäksi tapaustutkimusta (2), kyselyä (2) ja ohjelmaparien analysointia (1). Ytimen kokeellisissa tutkimuksissa yleisimmin koehenkilöinä käytettiin ohjelmoijia (35 koetta), jotka tavallisimmin olivat ohjelmoinnin opiskelijoita (29 koetta).

Kartoituksen tuloksista on pääteltävissä varsin masentava kuva tämän kartoituksen alueeseen kuuluvasta tutkimusaktiviteetista. Vaikuttaa siltä, että aina silloin tällöin joku tutkija tai tutkimusryhmä keksii, että tällaiset tutkimukset olisivat hieno juttu, ja tekee niitä sitten muutaman kunnes kyllästyy ja vaihtaa aihetta. Julkaistut tutkimukset eivät vaikuttaisi inspiroineen kovin paljoa jatkotutkimuksia, eikä paradigman perustavia esimerkkitutkimuksia näytä syntyneen. On kuitenkin mahdollista, että viimeisen viiden vuoden aikana lisääntynyt tutkimustoiminta tarkoittaa, että tilanne on muuttunut; mutta koska lukumäärät ovat edelleen pieniä, saattaa tilanne palata jokusen vuoden jälkeen takaisin matalan aktiviteetin tasolle. Valitettavasti kartoitukseni aineistosta ei ole mahdollista päätellä mitään viime vuosien tutkimustoiminnasta.

Lisensiaatintyöni kuluessa tein havainnon, että ohjelmointikielten alan tutkimusartikkeleiden tiivistelmät ovat varsin hyödyttömiä, sillä niissä ei useinkaan kerrota tutkimuksen empiirisen osan metodia eikä sillä saatuja tuloksia. Tähän voisi mahdollisesti saada hyötyä muilla aloilla jo käytössä olevasta rakenteisen tiivistelmän ideasta, jota olen tämänkin työn englanninkielisessä tiivistelmässä (abstract) soveltanut.

Kuten kaikilla tutkimuksilla, tällä lisensiaatintyöllä on rajoitteita, jotka tulee tuloksia tulkittaessa ottaa huomioon. Keskeisin rajoite on, että julkaisujen mukaan ottamisessa ja tutkimusten koodauksessa on voinut sattua virheitä, vaikka niitä on pyritty välttämään ja löytämään. On myös mahdollista, että joitakin asiaan liittyviä tutkimuksia ei ole löytynyt hauissa eikä siksi ole kartoituksessa huomioitu.

Kartoitukseni johtopäätös on, että näyttöön pohjautuvan ohjelmointikielten suunnittelun tueksi on olemassa jonkin verran empiiristä tutkimusnäyttöä, mutta vain muutamaa suunnitteluratkaisua on tutkittu laajemmin. Kielten suunnittelijat saattavat hyötyä kartoituksessa löydettyihin tutkimuksiin tutustumisesta, erityisesti haarautumista, silmukkaa, staattista ja dynaamista tyypitystä, luokkaperintää, tapahtumapohjaista muistia ja sisennystä koskien. Kartoituksen alan kuuluvaa tutkimusta harjoittavien tutkijoiden on syytä tutustua kritiikkiin, jota kirjallisuudessa on esitetty aiempia tutkimuksia vastaan. Lisäksi, kuten järjestelmällisissä toisiotutkimuksissa on tapana, totean, että uusien ensiötutkimusten tekeminen on tarpeen; erityisesti haarautumista koskevat tutkimukset ovat jo iäkkäitä eivätkä ne välttämättä vastaa kovin hyvin nykyoloja. Joistakin aiheista on mahdollisesti myös hyödyllistä laatia järjestelmällisiä katsauksia.

Licentiate Thesis is now publicly available

My recently accepted Licentiate Thesis, which I posted about a couple of days ago, is now available in JyX.

Here is the abstract again for reference:

Kaijanaho, Antti-Juhani
The extent of empirical evidence that could inform evidence-based design of programming languages. A systematic mapping study.
Jyväskylä: University of Jyväskylä, 2014, 243 p.
(Jyväskylä Licentiate Theses in Computing,
ISSN 1795-9713; 18)
ISBN 978-951-39-5790-2 (nid.)
ISBN 978-951-39-5791-9 (PDF)
Finnish summary

Background: Programming language design is not usually informed by empirical studies. In other fields similar problems have inspired an evidence-based paradigm of practice. Central to it are secondary studies summarizing and consolidating the research literature. Aims: This systematic mapping study looks for empirical research that could inform evidence-based design of programming languages. Method: Manual and keyword-based searches were performed, as was a single round of snowballing. There were 2056 potentially relevant publications, of which 180 were selected for inclusion, because they reported empirical evidence on the efficacy of potential design decisions and were published on or before 2012. A thematic synthesis was created. Results: Included studies span four decades, but activity has been sparse until the last five years or so. The form of conditional statements and loops, as well as the choice between static and dynamic typing have all been studied empirically for efficacy in at least five studies each. Error proneness, programming comprehension, and human effort are the most common forms of efficacy studied. Experimenting with programmer participants is the most popular method. Conclusions: There clearly are language design decisions for which empirical evidence regarding efficacy exists; they may be of some use to language designers, and several of them may be ripe for systematic reviewing. There is concern that the lack of interest generated by studies in this topic area until the recent surge of activity may indicate serious issues in their research approach.

Keywords: programming languages, programming language design, evidence-based paradigm, efficacy, research methods, systematic mapping study, thematic synthesis

A milestone toward a doctorate

Yesterday I received my official diploma for the degree of Licentiate of Philosophy. The degree lies between a Master’s degree and a doctorate, and is not required; it consists of the coursework required for a doctorate, and a Licentiate Thesis, “in which the student demonstrates good conversance with the field of research and the capability of independently and critically applying scientific research methods” (official translation of the Government decree on university degrees 794/2004, Section 23 Paragraph 2).

The title and abstract of my Licentiate Thesis follow:

Kaijanaho, Antti-Juhani
The extent of empirical evidence that could inform evidence-based design of programming languages. A systematic mapping study.
Jyväskylä: University of Jyväskylä, 2014, 243 p.
(Jyväskylä Licentiate Theses in Computing,
ISSN 1795-9713; 18)
ISBN 978-951-39-5790-2 (nid.)
ISBN 978-951-39-5791-9 (PDF)
Finnish summary

Background: Programming language design is not usually informed by empirical studies. In other fields similar problems have inspired an evidence-based paradigm of practice. Central to it are secondary studies summarizing and consolidating the research literature. Aims: This systematic mapping study looks for empirical research that could inform evidence-based design of programming languages. Method: Manual and keyword-based searches were performed, as was a single round of snowballing. There were 2056 potentially relevant publications, of which 180 were selected for inclusion, because they reported empirical evidence on the efficacy of potential design decisions and were published on or before 2012. A thematic synthesis was created. Results: Included studies span four decades, but activity has been sparse until the last five years or so. The form of conditional statements and loops, as well as the choice between static and dynamic typing have all been studied empirically for efficacy in at least five studies each. Error proneness, programming comprehension, and human effort are the most common forms of efficacy studied. Experimenting with programmer participants is the most popular method. Conclusions: There clearly are language design decisions for which empirical evidence regarding efficacy exists; they may be of some use to language designers, and several of them may be ripe for systematic reviewing. There is concern that the lack of interest generated by studies in this topic area until the recent surge of activity may indicate serious issues in their research approach.

Keywords: programming languages, programming language design, evidence-based paradigm, efficacy, research methods, systematic mapping study, thematic synthesis

A Licentiate Thesis is assessed by two examiners, usually drawn from outside of the home university; they write (either jointly or separately) a substantiated statement about the thesis, in which they suggest a grade. The final grade is almost always the one suggested by the examiners. I was very fortunate to have such prominent scientists as Dr. Stefan Hanenberg and Prof. Stein Krogdahl as the examiners of my thesis. They recommended, and I received, the grade “very good” (4 on a scale of 1–5).

The thesis has been accepted for publication published in our faculty’s licentiate thesis series and will in due course appear has appeared in our university’s electronic database (along with a very small number of printed copies). In the mean time, if anyone wants an electronic preprint, send me email at antti-juhani.kaijanaho@jyu.fi.

Figure 1 of the thesis: an overview of the mapping process
Figure 1 of the thesis: an overview of the mapping process

As you can imagine, the last couple of months in the spring were very stressful for me, as I pressed on to submit this thesis. After submission, it took me nearly two months to recover (which certain people who emailed me on Planet Haskell business during that period certainly noticed). It represents the fruit of almost four years of work (way more than normally is taken to complete a Licentiate Thesis, but never mind that), as I designed this study in Fall 2010.

Figure 8 of the thesis: Core studies per publication year
Figure 8 of the thesis: Core studies per publication year

Recently, I have been writing in my blog a series of posts in which I have been trying to clear my head about certain foundational issues that irritated me during the writing of the thesis. The thesis contains some of that, but that part of it is not very strong, as my examiners put it, for various reasons. The posts have been a deliberately non-academic attempt to shape the thoughts into words, to see what they look like fixed into a tangible form. (If you go read them, be warned: many of them are deliberately provocative, and many of them are intended as tentative in fact if not in phrasing; the series also is very incomplete at this time.)

I closed my previous post, the latest post in that series, as follows:

In fact, the whole of 20th Century philosophy of science is a big pile of failed attempts to explain science; not one explanation is fully satisfactory. […] Most scientists enjoy not pondering it, for it’s a bit like being a cartoon character: so long as you don’t look down, you can walk on air.

I wrote my Master’s Thesis (PDF) in 2002. It was about the formal method called “B”; but I took a lot of time and pages to examine the history and content of formal logic. My supervisor was, understandably, exasperated, but I did receive the highest possible grade for it (which I never have fully accepted I deserved). The main reason for that digression: I looked down, and I just had to go poke the bridge I was standing on to make sure I was not, in fact, walking on air. In the many years since, I’ve taken a lot of time to study foundations, first of mathematics, and more recently of science. It is one reason it took me about eight years to come up with a doable doctoral project (and I am still amazed that my department kept employing me; but I suppose they like my teaching, as do I). The other reason was, it took me that long to realize how to study the design of programming languages without going where everyone has gone before.

Debian people, if any are still reading, may find it interesting that I found significant use for the dctrl-tools toolset I have been writing for Debian for about fifteen years: I stored my data collection as a big pile of dctrl-format files. I ended up making some changes to the existing tools (I should upload the new version soon, I suppose), and I wrote another toolset (unfortunately one that is not general purpose, like the dctrl-tools are) in the process.

For the Haskell people, I mainly have an apology for not attending to Planet Haskell duties in the summer; but I am back in business now. I also note, somewhat to my regret, that I found very few studies dealing with Haskell. I just checked; I mention Haskell several times in the background chapter, but it is not mentioned in the results chapter (because there were not studies worthy of special notice).

I am already working on extending this work into a doctoral thesis. I expect, and hope, to complete that one faster.