You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Det visar dessutom att det går att använda materialet som presenteras tidigare
202
202
till att implementera och lösa mer komplexa problem.
203
203
204
-
\section{Skapande av och publicering på hemsidan}
205
-
206
-
Läromaterialet kompilerades med hjälp av ett skript och
207
-
publicerades på en hemsida. Skriptet anropar
208
-
Pandoc för att konvertera från källkod i Literate
209
-
Haskell-format till HTML, redo att visas på en hemsida. Pandoc
210
-
paketerar även med \textit{MathJax} som använder JavaScript för att
211
-
rendera matematiska formler i LaTeX-format på fint och läsbart
212
-
vis. Utan stöd för JavaScript skrivs matematik ut som omodifierad
213
-
LaTeX-kod, vilket är mer svårläst, men fortfarande tolkningsbart. Det
214
-
skrevs även CSS-kod för att modifiera utseendet av
215
-
hemsidan för att den skulle bli prydligare och mer lättläst.
216
-
217
-
Varje källfil betraktades som ett kapitel och publicerades som en
218
-
separat undersida. Med hjälp av ett index beskrivet i skriptet
219
-
konstruerades navigationselement mellan kapitel på varje undersida
220
-
och en innehållsförteckning.
221
-
222
-
För publicering lades all data producerad av skriptet i en ny git-gren (engelska \textit{git branch}) med namnet \texttt{gh-pages}. Att alla grenar synkroniseras
223
-
mot GitHub medför att alla filer på \texttt{gh-pages} grenen
224
-
visas som en hemsida med hjälp av \textit{GitHub
225
-
Pages}. Publiceringen skedde inte kontinuerligt eller automatiskt,
226
-
utan krävde en manuell synkronisering vid varje önskad uppdatering av
227
-
hemsidan.
204
+
%\section{Skapande av och publicering på hemsidan}
205
+
%
206
+
%Läromaterialet kompilerades med hjälp av ett skript och
207
+
%publicerades på en hemsida. Skriptet anropar
208
+
%Pandoc för att konvertera från källkod i Literate
209
+
%Haskell-format till HTML, redo att visas på en hemsida. Pandoc
210
+
%paketerar även med \textit{MathJax} som använder JavaScript för att
211
+
%rendera matematiska formler i LaTeX-format på fint och läsbart
212
+
%vis. Utan stöd för JavaScript skrivs matematik ut som omodifierad
213
+
%LaTeX-kod, vilket är mer svårläst, men fortfarande tolkningsbart. Det
214
+
%skrevs även CSS-kod för att modifiera utseendet av
215
+
%hemsidan för att den skulle bli prydligare och mer lättläst.
216
+
%
217
+
%Varje källfil betraktades som ett kapitel och publicerades som en
218
+
%separat undersida. Med hjälp av ett index beskrivet i skriptet
219
+
%konstruerades navigationselement mellan kapitel på varje undersida
220
+
%och en innehållsförteckning.
221
+
%
222
+
%För publicering lades all data producerad av skriptet i en ny git-gren (engelska \textit{git branch}) med namnet \texttt{gh-pages}. Att alla grenar synkroniseras
223
+
%mot GitHub medför att alla filer på \texttt{gh-pages} grenen
224
+
%visas som en hemsida med hjälp av \textit{GitHub
225
+
% Pages}. Publiceringen skedde inte kontinuerligt eller automatiskt,
226
+
%utan krävde en manuell synkronisering vid varje önskad uppdatering av
Copy file name to clipboardExpand all lines: Rapport/include/Resultat.tex
+66-17Lines changed: 66 additions & 17 deletions
Original file line number
Diff line number
Diff line change
@@ -1,15 +1,34 @@
1
1
\chapter{Resultat}
2
2
3
-
I detta kapitel redovisas det resulterande läromaterialet, vilket består av fem kapitel. Det är publicerat på en hemsida och dess källkod är fritt tillgänglig. Även
4
-
resultaten från utvärderingen med testgruppen och mötena med Åke Fäldt redovisas.
3
+
I detta kapitel redovisas det resulterande läromaterialet, vilket består av fem
4
+
kapitel. Det är publicerat på en hemsida och dess källkod är fritt tillgänglig.
5
+
Även resultaten från utvärderingen med testgruppen och mötena med Åke Fäldt
Detta avsnitt innehåller en översikt av läromaterialet samt ett utdrag av vardera kapitel. Utdragen exemplifier delar av läromaterialet och implementationerna av domänspecifika språk. De fullständiga implementationerna är inte inkluderade (och förklarade) eftersom det är precis det läromaterialet innehåller. Rapporten skulle då bli en kopia av läromaterialet. Istället hänvisas till ett längre utdrag i bilaga~\ref{cha:utdrag} samt hemsidan där läromaterialet~\cite{LYAP} finns tillgängligt. De utdrag som finns är inga exakta kopior ord-för-ord av läromaterialet utan de har anpassats till rapporten.
10
+
Detta avsnitt innehåller en översikt av läromaterialet samt ett utdrag av
11
+
vardera kapitel. Utdragen exemplifier delar av läromaterialet och
12
+
implementationerna av domänspecifika språk. De fullständiga implementationerna
13
+
är inte inkluderade (och förklarade) eftersom det är precis det läromaterialet
14
+
innehåller. Rapporten skulle då bli en kopia av läromaterialet. Istället
15
+
hänvisas till ett längre utdrag i bilaga~\ref{cha:utdrag} samt hemsidan där
16
+
läromaterialet~\cite{LYAP} finns tillgängligt. De utdrag som finns är inga
17
+
exakta kopior ord-för-ord av läromaterialet utan de har anpassats till
18
+
rapporten.
9
19
10
20
\subsection{Översikt}
11
21
12
-
Läromaterialet är en löpande text där Haskell-kod och lärotext sammanvävts. Det ser ut som i figur~\ref{fig:smakprov_laromaterial}. I texten följer läsaren med i implementationen av ett domänspecifikt språk och det visas hur det används. Tanken är att läsaren parallellt programmerar det som texten förklarar, för att på så sätt även få praktisk färdighet i det som presenterats. För detta syfte finns det även övningar tillagda direkt i den löpande texten, se figur~\ref{fig:smakprov_ovning}, som ofta innebär att läsaren själv ska implementera en liten del av det domänspecifika språket. Det finns också övningar i slutet av kapitlet som ofta innebär större vidareutvecklingar av de domänspecifika språken.
22
+
Läromaterialet är en löpande text där Haskell-kod och lärotext sammanvävts. Det
23
+
ser ut som i figur~\ref{fig:smakprov_laromaterial}. I texten följer läsaren med
24
+
i implementationen av ett domänspecifikt språk och det visas hur det används.
25
+
Tanken är att läsaren parallellt programmerar det som texten förklarar, för att
26
+
på så sätt även få praktisk färdighet i det som presenterats. För detta syfte
27
+
finns det även övningar tillagda direkt i den löpande texten, se
28
+
figur~\ref{fig:smakprov_ovning}, som ofta innebär att läsaren själv ska
29
+
implementera en liten del av det domänspecifika språket. Det finns också
30
+
övningar i slutet av kapitlet som ofta innebär större vidareutvecklingar av de
31
+
domänspecifika språken.
13
32
14
33
\begin{figure}[tph]
15
34
\centering
@@ -24,8 +43,11 @@ \subsection{Översikt}
24
43
\label{fig:smakprov_ovning}
25
44
\end{figure}
26
45
27
-
Språket i lärotexten är enligt projektgruppen lättsamt\footnote{Diskuteras utförligare i avsnitt \ref{sec:res_disk}.} och i detta syfte finns det även bilder tillagda. Figur~\ref{fig:smakprov_bild_laromaterial} är ett exempel på en bild ur
28
-
läromaterialet. Notera speciellt den medvetet oseriösa ritningstekniken som är tänkt att vara rolig och muntra upp läsaren.
46
+
Språket i lärotexten är enligt projektgruppen lättsamt\footnote{Diskuteras
47
+
utförligare i avsnitt \ref{sec:res_disk}.} och i detta syfte finns det även
48
+
bilder tillagda. Figur~\ref{fig:smakprov_bild_laromaterial} är ett exempel på en
49
+
bild ur läromaterialet. Notera speciellt den medvetet oseriösa ritningstekniken
50
+
som är tänkt att vara rolig och muntra upp läsaren.
29
51
30
52
\begin{figure}[tph]
31
53
\centering
@@ -34,7 +56,9 @@ \subsection{Översikt}
34
56
\label{fig:smakprov_bild_laromaterial}
35
57
\end{figure}
36
58
37
-
Läromaterialet innehåller 5 kapitel som vardera behandlar ett område inom fysik och matematik. Fokuset är på klassisk mekanik samt den matematik som tillhör området. De behandlade områdena är:
59
+
Läromaterialet innehåller 5 kapitel som vardera behandlar ett område inom fysik
60
+
och matematik. Fokuset är på klassisk mekanik samt den matematik som tillhör
61
+
området. De behandlade områdena är:
38
62
39
63
\begin{itemize}
40
64
\item Dimensioner
@@ -76,7 +100,7 @@ \subsection{Översikt}
76
100
krafter på lådor används det domänspecifika språket för vektorer till att
77
101
beräkna de krafter som verkar på en låda som glider ner för ett plan. I
78
102
gungbräda visas hur momentjämviktsberäkningar kan göras med det domänspecifika
79
-
språket för dimensioner.\todo{Stämmer inte längre, kan Björn uppdatera?}
103
+
språket för dimensioner.
80
104
81
105
\textit{Partikelmekanik}. En repetition av gymnasieskolans fysik.
82
106
Lägesenergi, rörelseenergi, gravitation och så vidare. Den modelleras med vektorer vars
@@ -93,17 +117,26 @@ \subsection{Översikt}
93
117
\subsection{Dimensioner}
94
118
\label{sec:grund_impl}
95
119
96
-
I detta avsnitt visas delar av hur implementationen av dimensioner ser ut i läromaterialet. Den fullständiga implementationen innehåller tre delar:
120
+
I detta avsnitt visas delar av hur implementationen av dimensioner ser ut i
121
+
läromaterialet. Den fullständiga implementationen innehåller tre delar:
97
122
98
123
\begin{enumerate}
99
124
\item Dimensioner på värdenivå
100
125
\item Dimensioner på typnivå
101
126
\item Datatyp för storheter
102
127
\end{enumerate}
103
128
104
-
Dimensioner på värdenivå används för att enkelt kunna skriva ut dimensioner i GHCi. Dimensioner på typnivå används för att ge typsäkerhet till dimensioner, så att till exempel en längd och en massa inte kan adderas, likt att ett värde av typ \texttt{Double} och \texttt{Integer} inte kan adderas i Haskell. Till sist kombineras de två varianterna av dimensioner till en datatyp för storheter som aritmetiska operationer kan utföras på.
129
+
Dimensioner på värdenivå används för att enkelt kunna skriva ut dimensioner i
130
+
GHCi. Dimensioner på typnivå används för att ge typsäkerhet till dimensioner, så
131
+
att till exempel en längd och en massa inte kan adderas, likt att ett värde av
132
+
typ \texttt{Double} och \texttt{Integer} inte kan adderas i Haskell. Till sist
133
+
kombineras de två varianterna av dimensioner till en datatyp för storheter som
134
+
aritmetiska operationer kan utföras på.
105
135
106
-
Dimensioner kan ses som en produkt av de 7 basdimensionerna\footnote{Längd, massa, tid, elektrisk ström, temperatur, substansmängd och ljusstyrka.}, med en indiviudell exponent till varje basdimension. Datatypen, på värdenivå, som används ser därför ut som följande
136
+
Dimensioner kan ses som en produkt av de 7 basdimensionerna\footnote{Längd,
137
+
massa, tid, elektrisk ström, temperatur, substansmängd och ljusstyrka.}, med en
138
+
indiviudell exponent till varje basdimension. Datatypen, på värdenivå, som
Varje fält i datatypen representerar exponenten för motsvarande basdimension. Om exponenten är $0$ betyder det att den basdimension inte är inkluderad i dimensionen. Några exempel ges för att förtydliga.
152
+
Varje fält i datatypen representerar exponenten för motsvarande basdimension. Om
153
+
exponenten är $0$ betyder det att den basdimension inte är inkluderad i
154
+
dimensionen. Några exempel ges för att förtydliga.
Hastighet skrivs vanligtvis som $\frac{m}{s}$ men ekvivalent är att skriva $m^1*s^{-1}$ vilket förklarar varför värdena ovan ser ut som de gör.
166
+
Hastighet skrivs vanligtvis som $\frac{m}{s}$ men ekvivalent är att skriva
167
+
$m^1*s^{-1}$ vilket förklarar varför värdena ovan ser ut som de gör.
132
168
133
-
I resterande del av detta kapitel i läromaterialet visas hur multiplikation och division samt hur en \textit{utskriftsfunktion}, som skriver ut ett värde snyggt, kan implementeras. Därefter följer ett antal delkapitel som innehåller testning, typnivådimensioner och storheter. Som tidigare nämnt inkluderas de inte här eftersom då skulle rapporten och läromaterialet bli precis samma text.
169
+
I resterande del av detta kapitel i läromaterialet visas hur multiplikation och
170
+
division samt hur en \textit{utskriftsfunktion}, som skriver ut ett värde
171
+
snyggt, kan implementeras. Därefter följer ett antal delkapitel som innehåller
172
+
testning, typnivådimensioner och storheter. Som tidigare nämnt inkluderas de
173
+
inte här eftersom då skulle rapporten och läromaterialet bli precis samma text.
134
174
135
175
\subsection{Matematisk analys}
136
176
137
177
\subsection{Vektorer}
138
178
179
+
Vektorer implementerades på två olika sätt. Det första följde definitionen i
180
+
kurboken och implementerade vektorer i två dimensioner med en typ vars
181
+
konstruktor tog två argument.
182
+
183
+
\begin{inline}
184
+
test :: Int
185
+
test = 1
186
+
\end{inline}
187
+
139
188
\subsection{Exempelproblem}
140
189
141
190
\subsection{Partikelmekanik}
@@ -152,9 +201,9 @@ \subsection{Partikelmekanik}
152
201
där de grundläggande områdena vektorer och matematisk analys
153
202
kombinerades. Anledningen till detta var att partiklars position, hastighet och
154
203
acceleration modelleras med vektorer, dessutom är de krafter som påverkar
155
-
partiklar även de modellerade som vektorer. Sedan används matematisk analys för att
156
-
göra beräkningar på dem. Därför var det naturligt att modellera partikelmekanik
157
-
med hjälp av vektorer vars komponenter var uttryck som
204
+
partiklar även de modellerade som vektorer. Sedan används matematisk analys för
205
+
att göra beräkningar på dem. Därför var det naturligt att modellera
206
+
partikelmekanik med hjälp av vektorer vars komponenter var uttryck som
\caption{Ett exempeluttryck från syntaxträdet\todo{Vilket syntaxträd?} illustrerat i ett
100
+
\caption{Ett exempeluttryck från syntaxträdet illustrerat i ett
101
101
träddiagram.}\label{fig:syntax_exempel_bild}
102
102
\end{figure}
103
103
@@ -149,7 +149,7 @@ \section{Litterat programmering och Literate Haskell}\label{sec:lhs}
149
149
viktigare än den andra.
150
150
151
151
\begin{figure}[tph]
152
-
\begin{lstlisting}[language={}]
152
+
\begin{lstlisting}[language={}, frame=single]
153
153
How does all this tie together? First the type is decided, for instance
154
154
155
155
> type ExampleType = Quantity T.Length Double
@@ -160,6 +160,7 @@ \section{Litterat programmering och Literate Haskell}\label{sec:lhs}
160
160
> exampleValue = Quantity V.length 5.3
161
161
162
162
Note that the Quantity data type has both value-level and type-level dimensions. As previosuly mentioned, value-level in order to pretty print and type-level to only permit legal operations.
163
+
163
164
\end{lstlisting}
164
165
\caption{Ett exempel på hur en källfil till litterat programmering kan se ut, tagen direkt från källkoden till läromaterialet.
165
166
I exemplet är koden skriven i Literate Haskell. Rader som börjar med \texttt{>}
0 commit comments