Skip to content

Commit

Permalink
rapport
Browse files Browse the repository at this point in the history
  • Loading branch information
northOfThule committed Apr 27, 2010
1 parent aad08f3 commit 9478a40
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 15 deletions.
7 changes: 4 additions & 3 deletions rapport/kapitel/inledning.tex
Expand Up @@ -12,7 +12,7 @@ \subsection{Bakgrund}
Att språket är funktionellt innebär bland annat att funktioner är \emph{first-class citizens} och kan därmed användas som parametrar och returneras från andra funktioner precis som vilken annan typ som helst.

% TODO teori eller bakkgrund?
Icke strikt semantik, även kallat \emph{lazy evaluation}, innebär mer konkret att evalueringen av ett uttryck inte kommer utföras förrän resultatet av uttrycket behövs.
Icke strikt semantik, även kallat \emph{lazy evaluation}, innebär mer konkret att evalueringen av ett uttryck inte kommer utföras förrän resultatet av uttrycket behövs. Om uttrycket inte behövs kommer interpretatorn att ignorera det.
%skriva in kod XD \lstinputlisting[language=Haskell, numbers=left]{kapitel/ex1.hs}

Lazy evaluation gör att programmeraren inte behöver bry sig om exekveringsordningen av ett program. Detta ger prestandaförbättringar eftersom ett uttryck inte evalueras alls om det inte behövs \citep{hudak89}.
Expand Down Expand Up @@ -44,10 +44,11 @@ \subsection{Metod}

Vi kommer även att använda det biblioteket för att bygga ett eget syntaxträd som skickas vidare till typcheckaren och interpretatorn I typcheckaren dekoreras syntaxträdet med typinformation.

Vi kommer att integrera jQuery \citep{jquery} för att få unisont stöd över samtliga webbläsare utan att behöva tänka på det. JQuery kommer också hjälpa oss med att få till ett enkelt och stilrent interaktivt gränssnitt.

En interaktiv prompt som kan köras i en webbläsare kommer att utvecklas. Den ska ge användaren möjlighet att skriva Haskell-funktioner och exekvera dem på ett liknande sätt som i GHCi.
Vi kommer att integrera jQuery \citep{jquery} för att få unisont stöd över samtliga webbläsare. JQuery kommer även underlätta arbetet med att skapa ett enkelt och stilrent interaktivt gränssnitt.

\subsubsection{Avgränsningar}
Haskell
Att tolka Haskell i Javascript är inget trivialt projekt och därför kommer inte hela Haskell att implementeras.
Endast en delmängd av Haskell98 specifikationen kommer att implementeras. De delar som prioriterades är
\begin{enumerate}
Expand Down
8 changes: 4 additions & 4 deletions rapport/kapitel/resultat.tex
Expand Up @@ -38,13 +38,13 @@ \subsection{Interpretator}


\subsection{HIJi}
HIJi, Haskell in Javascript Interpreter, är den del av projektet som användaren tydligast kommer märka av eftersom det är fasaden in i hela programmet.
HIJi, Haskell in Javascript Interactive, är den del av projektet som användaren tydligast kommer märka av eftersom det är fasaden in i programmet.
HIJi erbjuder användaren ett GHCi-liknande användargränssnitt direkt i webläsaren.
HIJi tar input genom att användaren skriver funktioner och uttryck i HIJi. När användaren klickar på retur tolkas inputen av parsern och bygger upp det abstrakta syntaxträdet. Därefter evalueras uttrycket utav interpretern.
Det går även att ladda moduler till HIJi. Det gör man genom att skriva :l \emph{namn-på-modul}. Man får då tillgång till alla de funktioner som är skrivna i den modulen.
%Resultatet av uttrycket visas på raden under.

HIJi är skapat för att likna GHCi i så stor utsträckning som möjligt. Det finns väldigt goda anledningar till att göra detta. Dels är GHCi ett mycket kompetent verktyg när man programmerar i Haskell. Att kolla upp funktionsdeklarationer och testa kodfragment är något som varje professionell haskellprogrammerare gör varje dag. Genom att efterlikna GHCi kommer användare känna igen sig när de tar steget från HIJi till GHCi. Det blir för dem ett naturligt steg och kortar inlärningströskeln. Även för haskellprogrammerare som är väl införstådda i GHCi's möjligheter blir det lättare att använda sig utav HIJi, de behöver inte fundera hur verktyget ska användas.
HIJi är skapat för att likna GHCi i så stor utsträckning som möjligt. Det finns väldigt goda anledningar till att göra detta. Dels är GHCi ett mycket kompetent verktyg när man programmerar i Haskell. Att kolla upp funktionsdeklarationer och testa kodfragment är något som varje professionell haskellprogrammerare gör varje dag. Genom att efterlikna GHCi kommer användare känna igen sig när de tar steget från HIJi till GHCi. Det blir för dem ett naturligt steg och kortar inlärningströskeln. Även för haskellprogrammerare som är väl införstådda i GHCi's möjligheter blir det lättare att använda sig utav HIJi, de behöver inte fundera hur verktyget ska användas.
Dock finns det vissa nackdelar med ett terminalbaserat användargränssnitt. Terminalbaserade användargränssnitt anses inte vara lika enkelt och intuitivt att förstå som ett grafiskt användargränssnitt.


Expand Down Expand Up @@ -74,8 +74,8 @@ \subsection{HIJi}


\subsubsection{Framtida förbättringar av HIJi}
HIJi är tänkt som ett webbaserat verktyg för nybörjare att komma igång med funktionell programmering. Ur det perspektivet når HIJi ännu inte upp till de krav som en nybörjare kan förvänta sig. Avsaknaden av interaktivitet är den i dagsläget största nackdelen. Vi presenterar därför här de förbättringar som vi anser vara nödvändiga för att nybörjare ska kunna använda sig utav HIJi.
HIJi är tänkt som ett webbaserat verktyg för nybörjare att komma igång med funktionell programmering. Ur det perspektivet når HIJi ännu inte upp till de krav som en nybörjare kan förvänta sig. Avsaknaden av interaktivitet är den i dagsläget största nackdelen. Vi presenterar därför här de förbättringar som vi anser vara nödvändiga för att nybörjare ska kunna använda sig utav HIJi.

Erbjuda en interaktiv tutorial där användaren får instruktioner vad som ska skrivas in i HIJi. Om använaren skriver in rätt uttryck fortsätter tutorialen till nästa nivå.
Erbjuda en interaktiv tutorial där användaren får instruktioner vad som ska skrivas in i HIJi. Om använaren skriver in rätt uttryck fortsätter tutorialen till nästa nivå.

Få ut typinformation ur funktioner genom att hålla musen över funktionsnamnet.
25 changes: 17 additions & 8 deletions rapport/rapport.tex
Expand Up @@ -13,6 +13,7 @@
\setlength{\parskip}{12pt}
\setlength{\parindent}{0pt}


\begin{document}
\title{Haskell in Javascript}
\author{
Expand All @@ -29,23 +30,31 @@
}
\date{\today}
\maketitle
\thispagestyle{empty}
\newpage
\input{kapitel/sammanfattning.tex}
\thispagestyle{empty}
\newpage
\input{kapitel/abstract.tex}
\thispagestyle{empty}
\newpage

\thispagestyle{empty}
\tableofcontents
\thispagestyle{empty}
\thispagestyle{empty}
\newpage

\listoffigures
\thispagestyle{empty}
% include all parts
\newpage
\input{kapitel/forord.tex}
\newpage
\input{kapitel/sammanfattning.tex}
\newpage
\input{kapitel/abstract.tex}
\newpage
\input{kapitel/forkortningslista.tex}
\newpage
% \input{kapitel/forord.tex}
% \newpage
% \input{kapitel/forkortningslista.tex}
% \newpage
\input{kapitel/inledning.tex}
\setcounter{page}{10}
\newpage
\input{kapitel/teori.tex}
\newpage
Expand Down

0 comments on commit 9478a40

Please sign in to comment.