You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.7 KiB
36 lines
1.7 KiB
5 years ago
|
% -*- mode: latex; coding: utf-8; TeX-master: ../thesis -*-
|
||
|
% !TEX TS-program = pdflatexmk
|
||
|
% !TEX encoding = UTF-8 Unicode
|
||
|
% !TEX root = ../thesis.tex
|
||
|
|
||
|
As a part of my bachelor studies, I chose to attend a course on functional programming.
|
||
|
Having worked with Go for the last 3 years, first-class and higher-order functions
|
||
|
were not particularly new ideas to me. However, learning Haskell was, at the beginning,
|
||
|
overwhelming.
|
||
|
|
||
|
I decided to rewrite the exercises that I did not understand in Go.
|
||
|
%So what I did for some exercises that I could not understand completely is that
|
||
|
%I rewrote them in Go.
|
||
|
The result was more verbose; usually
|
||
|
roughly two to three times the lines of code for the same algorithm.
|
||
|
However, after writing the Go version, I understood not only the Go version,
|
||
|
but also the Haskell version.
|
||
|
|
||
|
After doing this several times, I realised that I was constantly rewriting
|
||
|
the same higher-order functions with different types, but more or less the same
|
||
|
implementation. Thus, the idea of adding them as built-ins came up.
|
||
|
|
||
|
`Funcheck' then came into play when I wanted to build something in Go first and
|
||
|
later rewrite it in Haskell. It was hard to tell whether it was purely functional,
|
||
|
but it needed to be in order to be easier to write the implementation in Haskell.
|
||
|
|
||
|
This thesis is written based on my own struggles I had with Haskell, and it is
|
||
|
my hope that someday, someone may benefit from the work done in this thesis.
|
||
|
|
||
|
Special thanks to:
|
||
|
|
||
|
My supervisors Gerrit Burkert and Karl Rege for their support and guidance,
|
||
|
Tom Whiston for proofreading this thesis and improving my English,
|
||
|
Eva Kuske for the consultation on writing and
|
||
|
my employer \href{http://nine.ch}{nine} for their flexible work hours.
|