From 1bc117faa0aaa6c5596628a27332706c4e075f28 Mon Sep 17 00:00:00 2001
From: bjornregnell <bjorn.regnell@cs.lth.se>
Date: Tue, 22 Aug 2017 23:07:08 +0200
Subject: [PATCH] regenerate quiz files

---
 .../quiz-w01-concepts-solurows-generated.tex  |  28 +--
 .../quiz-w01-concepts-taskrows-generated.tex  |  28 +--
 .../quiz-w01-intdiv-solurows-generated.tex    |  14 +-
 .../quiz-w01-intdiv-taskrows-generated.tex    |  14 +-
 .../quiz-w01-types-solurows-generated.tex     |  20 +-
 .../quiz-w01-types-taskrows-generated.tex     |  20 +-
 .../quiz-w01-values-solurows-generated.tex    |  20 +-
 .../quiz-w01-values-taskrows-generated.tex    |  20 +-
 ...ray-vector-equality-solurows-generated.tex |   4 +-
 ...ray-vector-equality-taskrows-generated.tex |   4 +-
 ...y-vector-mutability-solurows-generated.tex |   4 +-
 ...y-vector-mutability-taskrows-generated.tex |   4 +-
 ...-collection-methods-solurows-generated.tex |  20 +-
 ...-collection-methods-taskrows-generated.tex |  20 +-
 .../quiz-w02-concepts-solurows-generated.tex  |  30 +--
 .../quiz-w02-concepts-taskrows-generated.tex  |  30 +--
 ...z-w02-for-yield-map-solurows-generated.tex |  10 +-
 ...z-w02-for-yield-map-taskrows-generated.tex |  10 +-
 ...02-hello-scala-java-solurows-generated.tex |   8 +-
 ...02-hello-scala-java-taskrows-generated.tex |   8 +-
 ...-w03-code-fragments-solurows-generated.tex |  14 +-
 ...-w03-code-fragments-taskrows-generated.tex |  14 +-
 .../quiz-w03-concepts-solurows-generated.tex  |  24 +-
 .../quiz-w03-concepts-taskrows-generated.tex  |  24 +-
 ...w03-function-values-solurows-generated.tex |   6 +-
 ...w03-function-values-taskrows-generated.tex |   6 +-
 .../quiz-w03-lambda-solurows-generated.tex    |  10 +-
 .../quiz-w03-lambda-taskrows-generated.tex    |  10 +-
 .../quiz-w03-yield-map-solurows-generated.tex |   8 +-
 .../quiz-w03-yield-map-taskrows-generated.tex |   8 +-
 .../quiz-w04-concepts-solurows-generated.tex  |  30 +--
 .../quiz-w04-concepts-taskrows-generated.tex  |  30 +--
 ...quiz-w05-case-class-solurows-generated.tex |  10 +-
 ...quiz-w05-case-class-taskrows-generated.tex |  10 +-
 .../quiz-w05-class-arg-solurows-generated.tex |  10 +-
 .../quiz-w05-class-arg-taskrows-generated.tex |  10 +-
 ...-w05-class-instance-solurows-generated.tex |  16 +-
 ...-w05-class-instance-taskrows-generated.tex |  16 +-
 ...uiz-w05-class-param-solurows-generated.tex |  14 +-
 ...uiz-w05-class-param-taskrows-generated.tex |  14 +-
 .../quiz-w05-concepts-solurows-generated.tex  |  24 +-
 .../quiz-w05-concepts-taskrows-generated.tex  |  24 +-
 ...bstract-collections-solurows-generated.tex |   6 +-
 ...bstract-collections-taskrows-generated.tex |   6 +-
 .../quiz-w06-concepts-solurows-generated.tex  |  22 +-
 .../quiz-w06-concepts-taskrows-generated.tex  |  22 +-
 ...w06-seq-collections-solurows-generated.tex |   8 +-
 ...w06-seq-collections-taskrows-generated.tex |   8 +-
 .../quiz-w06-seq-find-solurows-generated.tex  |  20 +-
 .../quiz-w06-seq-find-taskrows-generated.tex  |  20 +-
 ...uiz-w06-seq-methods-solurows-generated.tex |  28 +--
 ...uiz-w06-seq-methods-taskrows-generated.tex |  28 +--
 .../quiz-w06-seq-sort-solurows-generated.tex  |  18 +-
 .../quiz-w06-seq-sort-taskrows-generated.tex  |  18 +-
 ...quiz-w06-seq-update-solurows-generated.tex |  14 +-
 ...quiz-w06-seq-update-taskrows-generated.tex |  14 +-
 .../quiz-w07-concepts-solurows-generated.tex  |  10 +-
 .../quiz-w07-concepts-taskrows-generated.tex  |  10 +-
 .../quiz-w07-mapops-solurows-generated.tex    |  16 +-
 .../quiz-w07-mapops-taskrows-generated.tex    |  16 +-
 .../quiz-w07-setops-solurows-generated.tex    |  16 +-
 .../quiz-w07-setops-taskrows-generated.tex    |  16 +-
 compendium/postchapters/build.tex             |  93 ++++---
 compendium/postchapters/compile.tex           | 234 +++++++++---------
 64 files changed, 641 insertions(+), 650 deletions(-)

diff --git a/compendium/generated/quiz-w01-concepts-solurows-generated.tex b/compendium/generated/quiz-w01-concepts-solurows-generated.tex
index 3b99681a8..599284a7e 100644
--- a/compendium/generated/quiz-w01-concepts-solurows-generated.tex
+++ b/compendium/generated/quiz-w01-concepts-solurows-generated.tex
@@ -1,16 +1,16 @@
-  litteral & 1 & ~~\Large$\leadsto$~~ &  M & anger ett specifikt datavärde \\ 
-  sträng & 2 & ~~\Large$\leadsto$~~ &  K & en sekvens av tecken \\ 
+  litteral & 1 & ~~\Large$\leadsto$~~ &  N & anger ett specifikt datavärde \\ 
+  sträng & 2 & ~~\Large$\leadsto$~~ &  I & en sekvens av tecken \\ 
   sats & 3 & ~~\Large$\leadsto$~~ &  F & en kodrad som gör något; kan särskiljas med semikolon \\ 
-  uttryck & 4 & ~~\Large$\leadsto$~~ &  J & kombinerar värden och funktioner till ett nytt värde \\ 
-  funktion & 5 & ~~\Large$\leadsto$~~ &  C & vid anrop beräknas ett returvärde \\ 
-  procedur & 6 & ~~\Large$\leadsto$~~ &  P & vid anrop sker (sido)effekt; returvärdet är tomt \\ 
-  exekveringsfel & 7 & ~~\Large$\leadsto$~~ &  A & kan inträffa medan programmet kör \\ 
-  kompileringsfel & 8 & ~~\Large$\leadsto$~~ &  N & kan inträffa innan exekveringen startat \\ 
-  abstrahera & 9 & ~~\Large$\leadsto$~~ &  L & att införa nya begrepp som förenklar kodningen \\ 
-  kompilera & 10 & ~~\Large$\leadsto$~~ &  B & att översätta kod till exekverbar form \\ 
-  typ & 11 & ~~\Large$\leadsto$~~ &  G & beskriver vad data kan användas till \\ 
-  for-sats & 12 & ~~\Large$\leadsto$~~ &  E & bra då antalet repetitioner är bestämt i förväg \\ 
-  while-sats & 13 & ~~\Large$\leadsto$~~ &  O & bra då antalet repetitioner ej är bestämt i förväg \\ 
-  tilldelning & 14 & ~~\Large$\leadsto$~~ &  I & för att ändra en variabels värde \\ 
-  flyttal & 15 & ~~\Large$\leadsto$~~ &  D & decimaltal med begränsad noggrannhet \\ 
+  uttryck & 4 & ~~\Large$\leadsto$~~ &  P & kombinerar värden och funktioner till ett nytt värde \\ 
+  funktion & 5 & ~~\Large$\leadsto$~~ &  M & vid anrop beräknas ett returvärde \\ 
+  procedur & 6 & ~~\Large$\leadsto$~~ &  E & vid anrop sker (sido)effekt; returvärdet är tomt \\ 
+  exekveringsfel & 7 & ~~\Large$\leadsto$~~ &  B & kan inträffa medan programmet kör \\ 
+  kompileringsfel & 8 & ~~\Large$\leadsto$~~ &  K & kan inträffa innan exekveringen startat \\ 
+  abstrahera & 9 & ~~\Large$\leadsto$~~ &  O & att införa nya begrepp som förenklar kodningen \\ 
+  kompilera & 10 & ~~\Large$\leadsto$~~ &  G & att översätta kod till exekverbar form \\ 
+  typ & 11 & ~~\Large$\leadsto$~~ &  A & beskriver vad data kan användas till \\ 
+  for-sats & 12 & ~~\Large$\leadsto$~~ &  C & bra då antalet repetitioner är bestämt i förväg \\ 
+  while-sats & 13 & ~~\Large$\leadsto$~~ &  J & bra då antalet repetitioner ej är bestämt i förväg \\ 
+  tilldelning & 14 & ~~\Large$\leadsto$~~ &  D & för att ändra en variabels värde \\ 
+  flyttal & 15 & ~~\Large$\leadsto$~~ &  L & decimaltal med begränsad noggrannhet \\ 
   boolesk & 16 & ~~\Large$\leadsto$~~ &  H & antingen sann eller falsk \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w01-concepts-taskrows-generated.tex b/compendium/generated/quiz-w01-concepts-taskrows-generated.tex
index 1e58b889f..6c8e0a477 100644
--- a/compendium/generated/quiz-w01-concepts-taskrows-generated.tex
+++ b/compendium/generated/quiz-w01-concepts-taskrows-generated.tex
@@ -1,16 +1,16 @@
-  litteral & 1 & & A & kan inträffa medan programmet kör \\ 
-  sträng & 2 & & B & att översätta kod till exekverbar form \\ 
-  sats & 3 & & C & vid anrop beräknas ett returvärde \\ 
-  uttryck & 4 & & D & decimaltal med begränsad noggrannhet \\ 
-  funktion & 5 & & E & bra då antalet repetitioner är bestämt i förväg \\ 
+  litteral & 1 & & A & beskriver vad data kan användas till \\ 
+  sträng & 2 & & B & kan inträffa medan programmet kör \\ 
+  sats & 3 & & C & bra då antalet repetitioner är bestämt i förväg \\ 
+  uttryck & 4 & & D & för att ändra en variabels värde \\ 
+  funktion & 5 & & E & vid anrop sker (sido)effekt; returvärdet är tomt \\ 
   procedur & 6 & & F & en kodrad som gör något; kan särskiljas med semikolon \\ 
-  exekveringsfel & 7 & & G & beskriver vad data kan användas till \\ 
+  exekveringsfel & 7 & & G & att översätta kod till exekverbar form \\ 
   kompileringsfel & 8 & & H & antingen sann eller falsk \\ 
-  abstrahera & 9 & & I & för att ändra en variabels värde \\ 
-  kompilera & 10 & & J & kombinerar värden och funktioner till ett nytt värde \\ 
-  typ & 11 & & K & en sekvens av tecken \\ 
-  for-sats & 12 & & L & att införa nya begrepp som förenklar kodningen \\ 
-  while-sats & 13 & & M & anger ett specifikt datavärde \\ 
-  tilldelning & 14 & & N & kan inträffa innan exekveringen startat \\ 
-  flyttal & 15 & & O & bra då antalet repetitioner ej är bestämt i förväg \\ 
-  boolesk & 16 & & P & vid anrop sker (sido)effekt; returvärdet är tomt \\ 
\ No newline at end of file
+  abstrahera & 9 & & I & en sekvens av tecken \\ 
+  kompilera & 10 & & J & bra då antalet repetitioner ej är bestämt i förväg \\ 
+  typ & 11 & & K & kan inträffa innan exekveringen startat \\ 
+  for-sats & 12 & & L & decimaltal med begränsad noggrannhet \\ 
+  while-sats & 13 & & M & vid anrop beräknas ett returvärde \\ 
+  tilldelning & 14 & & N & anger ett specifikt datavärde \\ 
+  flyttal & 15 & & O & att införa nya begrepp som förenklar kodningen \\ 
+  boolesk & 16 & & P & kombinerar värden och funktioner till ett nytt värde \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w01-intdiv-solurows-generated.tex b/compendium/generated/quiz-w01-intdiv-solurows-generated.tex
index a4d5d7b78..e328a79e2 100644
--- a/compendium/generated/quiz-w01-intdiv-solurows-generated.tex
+++ b/compendium/generated/quiz-w01-intdiv-solurows-generated.tex
@@ -1,7 +1,7 @@
-  \code| 4 / 42      | & 1 & ~~\Large$\leadsto$~~ &  E & \code|    0: Int      | \\ 
-  \code| 42.0 / 2    | & 2 & ~~\Large$\leadsto$~~ &  F & \code| 21.0: Double   | \\ 
-  \code| 42 / 4      | & 3 & ~~\Large$\leadsto$~~ &  C & \code|   10: Int      | \\ 
-  \code| 42 % 4      | & 4 & ~~\Large$\leadsto$~~ &  B & \code|    2: Int      | \\ 
-  \code| 4 % 42      | & 5 & ~~\Large$\leadsto$~~ &  D & \code|    4: Int      | \\ 
-  \code| 40 % 4 == 0 | & 6 & ~~\Large$\leadsto$~~ &  A & \code|true : Boolean  | \\ 
-  \code| 42 % 4 == 0 | & 7 & ~~\Large$\leadsto$~~ &  G & \code|false: Boolean  | \\ 
\ No newline at end of file
+  \code| 4 / 42      | & 1 & ~~\Large$\leadsto$~~ &  D & \code|    0: Int      | \\ 
+  \code| 42.0 / 2    | & 2 & ~~\Large$\leadsto$~~ &  G & \code| 21.0: Double   | \\ 
+  \code| 42 / 4      | & 3 & ~~\Large$\leadsto$~~ &  A & \code|   10: Int      | \\ 
+  \code| 42 % 4      | & 4 & ~~\Large$\leadsto$~~ &  F & \code|    2: Int      | \\ 
+  \code| 4 % 42      | & 5 & ~~\Large$\leadsto$~~ &  C & \code|    4: Int      | \\ 
+  \code| 40 % 4 == 0 | & 6 & ~~\Large$\leadsto$~~ &  B & \code|true : Boolean  | \\ 
+  \code| 42 % 4 == 0 | & 7 & ~~\Large$\leadsto$~~ &  E & \code|false: Boolean  | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w01-intdiv-taskrows-generated.tex b/compendium/generated/quiz-w01-intdiv-taskrows-generated.tex
index 4f733313f..4e4926a2b 100644
--- a/compendium/generated/quiz-w01-intdiv-taskrows-generated.tex
+++ b/compendium/generated/quiz-w01-intdiv-taskrows-generated.tex
@@ -1,7 +1,7 @@
-  \code| 4 / 42      | & 1 & & A & \code|true : Boolean  | \\ 
-  \code| 42.0 / 2    | & 2 & & B & \code|    2: Int      | \\ 
-  \code| 42 / 4      | & 3 & & C & \code|   10: Int      | \\ 
-  \code| 42 % 4      | & 4 & & D & \code|    4: Int      | \\ 
-  \code| 4 % 42      | & 5 & & E & \code|    0: Int      | \\ 
-  \code| 40 % 4 == 0 | & 6 & & F & \code| 21.0: Double   | \\ 
-  \code| 42 % 4 == 0 | & 7 & & G & \code|false: Boolean  | \\ 
\ No newline at end of file
+  \code| 4 / 42      | & 1 & & A & \code|   10: Int      | \\ 
+  \code| 42.0 / 2    | & 2 & & B & \code|true : Boolean  | \\ 
+  \code| 42 / 4      | & 3 & & C & \code|    4: Int      | \\ 
+  \code| 42 % 4      | & 4 & & D & \code|    0: Int      | \\ 
+  \code| 4 % 42      | & 5 & & E & \code|false: Boolean  | \\ 
+  \code| 40 % 4 == 0 | & 6 & & F & \code|    2: Int      | \\ 
+  \code| 42 % 4 == 0 | & 7 & & G & \code| 21.0: Double   | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w01-types-solurows-generated.tex b/compendium/generated/quiz-w01-types-solurows-generated.tex
index 6352f66e1..c44e601a3 100644
--- a/compendium/generated/quiz-w01-types-solurows-generated.tex
+++ b/compendium/generated/quiz-w01-types-solurows-generated.tex
@@ -1,10 +1,10 @@
-  \code|1    | & 1 & ~~\Large$\leadsto$~~ &  I & \code|Int    | \\ 
-  \code|1L   | & 2 & ~~\Large$\leadsto$~~ &  F & \code|Long   | \\ 
-  \code|1.0  | & 3 & ~~\Large$\leadsto$~~ &  J & \code|Double | \\ 
-  \code|1D   | & 4 & ~~\Large$\leadsto$~~ &  E & \code|Double | \\ 
-  \code|1F   | & 5 & ~~\Large$\leadsto$~~ &  H & \code|Float  | \\ 
-  \code|'1'  | & 6 & ~~\Large$\leadsto$~~ &  D & \code|Char   | \\ 
-  \code|"1"| & 7 & ~~\Large$\leadsto$~~ &  C & \code|String | \\ 
-  \code|true | & 8 & ~~\Large$\leadsto$~~ &  A & \code|Boolean| \\ 
-  \code|false| & 9 & ~~\Large$\leadsto$~~ &  B & \code|Boolean| \\ 
-  \code|()   | & 10 & ~~\Large$\leadsto$~~ &  G & \code|Unit   | \\ 
\ No newline at end of file
+  \code|1    | & 1 & ~~\Large$\leadsto$~~ &  J & \code|Int    | \\ 
+  \code|1L   | & 2 & ~~\Large$\leadsto$~~ &  B & \code|Long   | \\ 
+  \code|1.0  | & 3 & ~~\Large$\leadsto$~~ &  G & \code|Double | \\ 
+  \code|1D   | & 4 & ~~\Large$\leadsto$~~ &  F & \code|Double | \\ 
+  \code|1F   | & 5 & ~~\Large$\leadsto$~~ &  A & \code|Float  | \\ 
+  \code|'1'  | & 6 & ~~\Large$\leadsto$~~ &  E & \code|Char   | \\ 
+  \code|"1"| & 7 & ~~\Large$\leadsto$~~ &  I & \code|String | \\ 
+  \code|true | & 8 & ~~\Large$\leadsto$~~ &  C & \code|Boolean| \\ 
+  \code|false| & 9 & ~~\Large$\leadsto$~~ &  H & \code|Boolean| \\ 
+  \code|()   | & 10 & ~~\Large$\leadsto$~~ &  D & \code|Unit   | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w01-types-taskrows-generated.tex b/compendium/generated/quiz-w01-types-taskrows-generated.tex
index 25f1f0f93..032af0597 100644
--- a/compendium/generated/quiz-w01-types-taskrows-generated.tex
+++ b/compendium/generated/quiz-w01-types-taskrows-generated.tex
@@ -1,10 +1,10 @@
-  \code|1    | & 1 & & A & \code|Boolean| \\ 
-  \code|1L   | & 2 & & B & \code|Boolean| \\ 
-  \code|1.0  | & 3 & & C & \code|String | \\ 
-  \code|1D   | & 4 & & D & \code|Char   | \\ 
-  \code|1F   | & 5 & & E & \code|Double | \\ 
-  \code|'1'  | & 6 & & F & \code|Long   | \\ 
-  \code|"1"| & 7 & & G & \code|Unit   | \\ 
-  \code|true | & 8 & & H & \code|Float  | \\ 
-  \code|false| & 9 & & I & \code|Int    | \\ 
-  \code|()   | & 10 & & J & \code|Double | \\ 
\ No newline at end of file
+  \code|1    | & 1 & & A & \code|Float  | \\ 
+  \code|1L   | & 2 & & B & \code|Long   | \\ 
+  \code|1.0  | & 3 & & C & \code|Boolean| \\ 
+  \code|1D   | & 4 & & D & \code|Unit   | \\ 
+  \code|1F   | & 5 & & E & \code|Char   | \\ 
+  \code|'1'  | & 6 & & F & \code|Double | \\ 
+  \code|"1"| & 7 & & G & \code|Double | \\ 
+  \code|true | & 8 & & H & \code|Boolean| \\ 
+  \code|false| & 9 & & I & \code|String | \\ 
+  \code|()   | & 10 & & J & \code|Int    | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w01-values-solurows-generated.tex b/compendium/generated/quiz-w01-values-solurows-generated.tex
index 5e78b59fd..281fe4ba8 100644
--- a/compendium/generated/quiz-w01-values-solurows-generated.tex
+++ b/compendium/generated/quiz-w01-values-solurows-generated.tex
@@ -1,12 +1,12 @@
-  \code|1.0 + 18          | & 1 & ~~\Large$\leadsto$~~ &  L & \code|19.0: Double    | \\ 
-  \code|(41 + 1).toDouble | & 2 & ~~\Large$\leadsto$~~ &  D & \code|42.0: Double    | \\ 
-  \code|1.042e42 + 1      | & 3 & ~~\Large$\leadsto$~~ &  H & \code|1.042E42: Double| \\ 
+  \code|1.0 + 18          | & 1 & ~~\Large$\leadsto$~~ &  D & \code|19.0: Double    | \\ 
+  \code|(41 + 1).toDouble | & 2 & ~~\Large$\leadsto$~~ &  L & \code|42.0: Double    | \\ 
+  \code|1.042e42 + 1      | & 3 & ~~\Large$\leadsto$~~ &  I & \code|1.042E42: Double| \\ 
   \code|12E6.toLong       | & 4 & ~~\Large$\leadsto$~~ &  E & \code|12000000: Long  | \\ 
-  \code|32.toChar.toString| & 5 & ~~\Large$\leadsto$~~ &  C & \code|" ": String   | \\ 
-  \code|'A'.toInt         | & 6 & ~~\Large$\leadsto$~~ &  J & \code|65: Int         | \\ 
-  \code|0.toInt           | & 7 & ~~\Large$\leadsto$~~ &  F & \code|0: Int          | \\ 
-  \code|'0'.toInt         | & 8 & ~~\Large$\leadsto$~~ &  I & \code|48: Int         | \\ 
-  \code|'9'.toInt         | & 9 & ~~\Large$\leadsto$~~ &  A & \code|57: Int         | \\ 
-  \code|'A' + '0'         | & 10 & ~~\Large$\leadsto$~~ &  B & \code|113: Int        | \\ 
-  \code|('A' + '0').toChar| & 11 & ~~\Large$\leadsto$~~ &  K & \code|'q': Char       | \\ 
+  \code|32.toChar.toString| & 5 & ~~\Large$\leadsto$~~ &  H & \code|" ": String   | \\ 
+  \code|'A'.toInt         | & 6 & ~~\Large$\leadsto$~~ &  K & \code|65: Int         | \\ 
+  \code|0.toInt           | & 7 & ~~\Large$\leadsto$~~ &  J & \code|0: Int          | \\ 
+  \code|'0'.toInt         | & 8 & ~~\Large$\leadsto$~~ &  C & \code|48: Int         | \\ 
+  \code|'9'.toInt         | & 9 & ~~\Large$\leadsto$~~ &  B & \code|57: Int         | \\ 
+  \code|'A' + '0'         | & 10 & ~~\Large$\leadsto$~~ &  F & \code|113: Int        | \\ 
+  \code|('A' + '0').toChar| & 11 & ~~\Large$\leadsto$~~ &  A & \code|'q': Char       | \\ 
   \code|"*!%#".charAt(0)| & 12 & ~~\Large$\leadsto$~~ &  G & \code|'*': Char       | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w01-values-taskrows-generated.tex b/compendium/generated/quiz-w01-values-taskrows-generated.tex
index f4d9da7f4..53aa2be09 100644
--- a/compendium/generated/quiz-w01-values-taskrows-generated.tex
+++ b/compendium/generated/quiz-w01-values-taskrows-generated.tex
@@ -1,12 +1,12 @@
-  \code|1.0 + 18          | & 1 & & A & \code|57: Int         | \\ 
-  \code|(41 + 1).toDouble | & 2 & & B & \code|113: Int        | \\ 
-  \code|1.042e42 + 1      | & 3 & & C & \code|" ": String   | \\ 
-  \code|12E6.toLong       | & 4 & & D & \code|42.0: Double    | \\ 
+  \code|1.0 + 18          | & 1 & & A & \code|'q': Char       | \\ 
+  \code|(41 + 1).toDouble | & 2 & & B & \code|57: Int         | \\ 
+  \code|1.042e42 + 1      | & 3 & & C & \code|48: Int         | \\ 
+  \code|12E6.toLong       | & 4 & & D & \code|19.0: Double    | \\ 
   \code|32.toChar.toString| & 5 & & E & \code|12000000: Long  | \\ 
-  \code|'A'.toInt         | & 6 & & F & \code|0: Int          | \\ 
+  \code|'A'.toInt         | & 6 & & F & \code|113: Int        | \\ 
   \code|0.toInt           | & 7 & & G & \code|'*': Char       | \\ 
-  \code|'0'.toInt         | & 8 & & H & \code|1.042E42: Double| \\ 
-  \code|'9'.toInt         | & 9 & & I & \code|48: Int         | \\ 
-  \code|'A' + '0'         | & 10 & & J & \code|65: Int         | \\ 
-  \code|('A' + '0').toChar| & 11 & & K & \code|'q': Char       | \\ 
-  \code|"*!%#".charAt(0)| & 12 & & L & \code|19.0: Double    | \\ 
\ No newline at end of file
+  \code|'0'.toInt         | & 8 & & H & \code|" ": String   | \\ 
+  \code|'9'.toInt         | & 9 & & I & \code|1.042E42: Double| \\ 
+  \code|'A' + '0'         | & 10 & & J & \code|0: Int          | \\ 
+  \code|('A' + '0').toChar| & 11 & & K & \code|65: Int         | \\ 
+  \code|"*!%#".charAt(0)| & 12 & & L & \code|42.0: Double    | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-array-vector-equality-solurows-generated.tex b/compendium/generated/quiz-w02-array-vector-equality-solurows-generated.tex
index 61642aa8d..d26148f69 100644
--- a/compendium/generated/quiz-w02-array-vector-equality-solurows-generated.tex
+++ b/compendium/generated/quiz-w02-array-vector-equality-solurows-generated.tex
@@ -1,2 +1,2 @@
-  Vector & 1 & ~~\Large$\leadsto$~~ &  A & \code|xs == ys| är \code|true| om alla element lika \\ 
-  Array & 2 & ~~\Large$\leadsto$~~ &  B & olikt andra Scala-samlingar kollar \code|==| ej innehållslikhet \\ 
\ No newline at end of file
+  Vector & 1 & ~~\Large$\leadsto$~~ &  B & \code|xs == ys| är \code|true| om alla element lika \\ 
+  Array & 2 & ~~\Large$\leadsto$~~ &  A & olikt andra Scala-samlingar kollar \code|==| ej innehållslikhet \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-array-vector-equality-taskrows-generated.tex b/compendium/generated/quiz-w02-array-vector-equality-taskrows-generated.tex
index db9b55efc..ad2fa3ed8 100644
--- a/compendium/generated/quiz-w02-array-vector-equality-taskrows-generated.tex
+++ b/compendium/generated/quiz-w02-array-vector-equality-taskrows-generated.tex
@@ -1,2 +1,2 @@
-  Vector & 1 & & A & \code|xs == ys| är \code|true| om alla element lika \\ 
-  Array & 2 & & B & olikt andra Scala-samlingar kollar \code|==| ej innehållslikhet \\ 
\ No newline at end of file
+  Vector & 1 & & A & olikt andra Scala-samlingar kollar \code|==| ej innehållslikhet \\ 
+  Array & 2 & & B & \code|xs == ys| är \code|true| om alla element lika \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-array-vector-mutability-solurows-generated.tex b/compendium/generated/quiz-w02-array-vector-mutability-solurows-generated.tex
index 01942cc9f..ac84b1ca9 100644
--- a/compendium/generated/quiz-w02-array-vector-mutability-solurows-generated.tex
+++ b/compendium/generated/quiz-w02-array-vector-mutability-solurows-generated.tex
@@ -1,2 +1,2 @@
-  Vector & 1 & ~~\Large$\leadsto$~~ &  A & oföränderlig \\ 
-  Array & 2 & ~~\Large$\leadsto$~~ &  B & förändringsbar \\ 
\ No newline at end of file
+  Vector & 1 & ~~\Large$\leadsto$~~ &  B & oföränderlig \\ 
+  Array & 2 & ~~\Large$\leadsto$~~ &  A & förändringsbar \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-array-vector-mutability-taskrows-generated.tex b/compendium/generated/quiz-w02-array-vector-mutability-taskrows-generated.tex
index 697bbfe14..321cef6c2 100644
--- a/compendium/generated/quiz-w02-array-vector-mutability-taskrows-generated.tex
+++ b/compendium/generated/quiz-w02-array-vector-mutability-taskrows-generated.tex
@@ -1,2 +1,2 @@
-  Vector & 1 & & A & oföränderlig \\ 
-  Array & 2 & & B & förändringsbar \\ 
\ No newline at end of file
+  Vector & 1 & & A & förändringsbar \\ 
+  Array & 2 & & B & oföränderlig \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-collection-methods-solurows-generated.tex b/compendium/generated/quiz-w02-collection-methods-solurows-generated.tex
index 352c269bd..6f5c2644c 100644
--- a/compendium/generated/quiz-w02-collection-methods-solurows-generated.tex
+++ b/compendium/generated/quiz-w02-collection-methods-solurows-generated.tex
@@ -1,11 +1,11 @@
-  \code|val xs = Vector(2) | & 1 & ~~\Large$\leadsto$~~ &  H & ny referens till sekvens av längd 1 \\ 
-  \code|Array.fill(9)(0)   | & 2 & ~~\Large$\leadsto$~~ &  F & ny förändringsbar sekvens med nollor \\ 
-  \code|Vector.fill(9)(' ')| & 3 & ~~\Large$\leadsto$~~ &  G & ny oföränderlig sekvens med blanktecken \\ 
-  \code|xs(0)              | & 4 & ~~\Large$\leadsto$~~ &  A & förkortad skrivning av \code|apply(0)| \\ 
-  \code|xs.apply(0)        | & 5 & ~~\Large$\leadsto$~~ &  E & indexering, ger första elementet \\ 
-  \code|xs :+ 0            | & 6 & ~~\Large$\leadsto$~~ &  K & ny samling med en nolla tillagd på slutet \\ 
-  \code|0 +: xs            | & 7 & ~~\Large$\leadsto$~~ &  D & ny samling med en nolla tillagd i början \\ 
-  \code|xs.mkString        | & 8 & ~~\Large$\leadsto$~~ &  C & ny sträng med alla element intill varandra \\ 
-  \code|xs.mkString(",") | & 9 & ~~\Large$\leadsto$~~ &  B & ny sträng med komma mellan elementen \\ 
-  \code|xs.map(_.toString) | & 10 & ~~\Large$\leadsto$~~ &  J & ny samling, elementen omgjorda till strängar \\ 
+  \code|val xs = Vector(2) | & 1 & ~~\Large$\leadsto$~~ &  F & ny referens till sekvens av längd 1 \\ 
+  \code|Array.fill(9)(0)   | & 2 & ~~\Large$\leadsto$~~ &  A & ny förändringsbar sekvens med nollor \\ 
+  \code|Vector.fill(9)(' ')| & 3 & ~~\Large$\leadsto$~~ &  J & ny oföränderlig sekvens med blanktecken \\ 
+  \code|xs(0)              | & 4 & ~~\Large$\leadsto$~~ &  B & förkortad skrivning av \code|apply(0)| \\ 
+  \code|xs.apply(0)        | & 5 & ~~\Large$\leadsto$~~ &  H & indexering, ger första elementet \\ 
+  \code|xs :+ 0            | & 6 & ~~\Large$\leadsto$~~ &  G & ny samling med en nolla tillagd på slutet \\ 
+  \code|0 +: xs            | & 7 & ~~\Large$\leadsto$~~ &  C & ny samling med en nolla tillagd i början \\ 
+  \code|xs.mkString        | & 8 & ~~\Large$\leadsto$~~ &  D & ny sträng med alla element intill varandra \\ 
+  \code|xs.mkString(",") | & 9 & ~~\Large$\leadsto$~~ &  K & ny sträng med komma mellan elementen \\ 
+  \code|xs.map(_.toString) | & 10 & ~~\Large$\leadsto$~~ &  E & ny samling, elementen omgjorda till strängar \\ 
   \code|xs map (_.toInt)   | & 11 & ~~\Large$\leadsto$~~ &  I & ny samling, elementen omgjorda till heltal \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-collection-methods-taskrows-generated.tex b/compendium/generated/quiz-w02-collection-methods-taskrows-generated.tex
index 038e0c7fe..33068592a 100644
--- a/compendium/generated/quiz-w02-collection-methods-taskrows-generated.tex
+++ b/compendium/generated/quiz-w02-collection-methods-taskrows-generated.tex
@@ -1,11 +1,11 @@
-  \code|val xs = Vector(2) | & 1 & & A & förkortad skrivning av \code|apply(0)| \\ 
-  \code|Array.fill(9)(0)   | & 2 & & B & ny sträng med komma mellan elementen \\ 
-  \code|Vector.fill(9)(' ')| & 3 & & C & ny sträng med alla element intill varandra \\ 
-  \code|xs(0)              | & 4 & & D & ny samling med en nolla tillagd i början \\ 
-  \code|xs.apply(0)        | & 5 & & E & indexering, ger första elementet \\ 
-  \code|xs :+ 0            | & 6 & & F & ny förändringsbar sekvens med nollor \\ 
-  \code|0 +: xs            | & 7 & & G & ny oföränderlig sekvens med blanktecken \\ 
-  \code|xs.mkString        | & 8 & & H & ny referens till sekvens av längd 1 \\ 
+  \code|val xs = Vector(2) | & 1 & & A & ny förändringsbar sekvens med nollor \\ 
+  \code|Array.fill(9)(0)   | & 2 & & B & förkortad skrivning av \code|apply(0)| \\ 
+  \code|Vector.fill(9)(' ')| & 3 & & C & ny samling med en nolla tillagd i början \\ 
+  \code|xs(0)              | & 4 & & D & ny sträng med alla element intill varandra \\ 
+  \code|xs.apply(0)        | & 5 & & E & ny samling, elementen omgjorda till strängar \\ 
+  \code|xs :+ 0            | & 6 & & F & ny referens till sekvens av längd 1 \\ 
+  \code|0 +: xs            | & 7 & & G & ny samling med en nolla tillagd på slutet \\ 
+  \code|xs.mkString        | & 8 & & H & indexering, ger första elementet \\ 
   \code|xs.mkString(",") | & 9 & & I & ny samling, elementen omgjorda till heltal \\ 
-  \code|xs.map(_.toString) | & 10 & & J & ny samling, elementen omgjorda till strängar \\ 
-  \code|xs map (_.toInt)   | & 11 & & K & ny samling med en nolla tillagd på slutet \\ 
\ No newline at end of file
+  \code|xs.map(_.toString) | & 10 & & J & ny oföränderlig sekvens med blanktecken \\ 
+  \code|xs map (_.toInt)   | & 11 & & K & ny sträng med komma mellan elementen \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-concepts-solurows-generated.tex b/compendium/generated/quiz-w02-concepts-solurows-generated.tex
index df06a09f9..2eb7691d6 100644
--- a/compendium/generated/quiz-w02-concepts-solurows-generated.tex
+++ b/compendium/generated/quiz-w02-concepts-solurows-generated.tex
@@ -1,15 +1,15 @@
-  kompilerad & 1 & ~~\Large$\leadsto$~~ &  G & maskinkod sparad och kan köras igen utan kompilering \\ 
-  skript & 2 & ~~\Large$\leadsto$~~ &  N & maskinkod sparas ej utan skapas vid varje körning \\ 
-  objekt & 3 & ~~\Large$\leadsto$~~ &  M & samlar variabler och funktioner \\ 
-  main & 4 & ~~\Large$\leadsto$~~ &  D & där exekveringen av kompilerat program startar \\ 
-  programargument & 5 & ~~\Large$\leadsto$~~ &  B & överförs via parametern args i main \\ 
-  datastruktur & 6 & ~~\Large$\leadsto$~~ &  I & många olika element i en helhet; elementvis åtkomst \\ 
-  samling & 7 & ~~\Large$\leadsto$~~ &  E & datastruktur med element av samma typ \\ 
-  sekvenssamling & 8 & ~~\Large$\leadsto$~~ &  L & datastruktur med element i en viss ordning \\ 
-  Array & 9 & ~~\Large$\leadsto$~~ &  O & en förändringsbar, indexerbar sekvenssamling \\ 
-  Vector & 10 & ~~\Large$\leadsto$~~ &  F & en oföränderlig, indexerbar sekvenssamling \\ 
-  Range & 11 & ~~\Large$\leadsto$~~ &  J & en samling som representerar ett intervall av heltal \\ 
-  yield & 12 & ~~\Large$\leadsto$~~ &  K & används i for-uttryck för att skapa ny samling \\ 
-  map & 13 & ~~\Large$\leadsto$~~ &  C & applicerar en funktion på varje element i en samling \\ 
-  algoritm & 14 & ~~\Large$\leadsto$~~ &  H & stegvis beskrivning av en lösning på ett problem \\ 
-  implementation & 15 & ~~\Large$\leadsto$~~ &  A & en specifik realisering av en algoritm \\ 
\ No newline at end of file
+  kompilerad & 1 & ~~\Large$\leadsto$~~ &  J & maskinkod sparad och kan köras igen utan kompilering \\ 
+  skript & 2 & ~~\Large$\leadsto$~~ &  M & maskinkod sparas ej utan skapas vid varje körning \\ 
+  objekt & 3 & ~~\Large$\leadsto$~~ &  K & samlar variabler och funktioner \\ 
+  main & 4 & ~~\Large$\leadsto$~~ &  N & där exekveringen av kompilerat program startar \\ 
+  programargument & 5 & ~~\Large$\leadsto$~~ &  D & överförs via parametern args i main \\ 
+  datastruktur & 6 & ~~\Large$\leadsto$~~ &  F & många olika element i en helhet; elementvis åtkomst \\ 
+  samling & 7 & ~~\Large$\leadsto$~~ &  B & datastruktur med element av samma typ \\ 
+  sekvenssamling & 8 & ~~\Large$\leadsto$~~ &  H & datastruktur med element i en viss ordning \\ 
+  Array & 9 & ~~\Large$\leadsto$~~ &  G & en förändringsbar, indexerbar sekvenssamling \\ 
+  Vector & 10 & ~~\Large$\leadsto$~~ &  I & en oföränderlig, indexerbar sekvenssamling \\ 
+  Range & 11 & ~~\Large$\leadsto$~~ &  L & en samling som representerar ett intervall av heltal \\ 
+  yield & 12 & ~~\Large$\leadsto$~~ &  E & används i for-uttryck för att skapa ny samling \\ 
+  map & 13 & ~~\Large$\leadsto$~~ &  O & applicerar en funktion på varje element i en samling \\ 
+  algoritm & 14 & ~~\Large$\leadsto$~~ &  A & stegvis beskrivning av en lösning på ett problem \\ 
+  implementation & 15 & ~~\Large$\leadsto$~~ &  C & en specifik realisering av en algoritm \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-concepts-taskrows-generated.tex b/compendium/generated/quiz-w02-concepts-taskrows-generated.tex
index 445dc8edd..a600a6ca7 100644
--- a/compendium/generated/quiz-w02-concepts-taskrows-generated.tex
+++ b/compendium/generated/quiz-w02-concepts-taskrows-generated.tex
@@ -1,15 +1,15 @@
-  kompilerad & 1 & & A & en specifik realisering av en algoritm \\ 
-  skript & 2 & & B & överförs via parametern args i main \\ 
-  objekt & 3 & & C & applicerar en funktion på varje element i en samling \\ 
-  main & 4 & & D & där exekveringen av kompilerat program startar \\ 
-  programargument & 5 & & E & datastruktur med element av samma typ \\ 
-  datastruktur & 6 & & F & en oföränderlig, indexerbar sekvenssamling \\ 
-  samling & 7 & & G & maskinkod sparad och kan köras igen utan kompilering \\ 
-  sekvenssamling & 8 & & H & stegvis beskrivning av en lösning på ett problem \\ 
-  Array & 9 & & I & många olika element i en helhet; elementvis åtkomst \\ 
-  Vector & 10 & & J & en samling som representerar ett intervall av heltal \\ 
-  Range & 11 & & K & används i for-uttryck för att skapa ny samling \\ 
-  yield & 12 & & L & datastruktur med element i en viss ordning \\ 
-  map & 13 & & M & samlar variabler och funktioner \\ 
-  algoritm & 14 & & N & maskinkod sparas ej utan skapas vid varje körning \\ 
-  implementation & 15 & & O & en förändringsbar, indexerbar sekvenssamling \\ 
\ No newline at end of file
+  kompilerad & 1 & & A & stegvis beskrivning av en lösning på ett problem \\ 
+  skript & 2 & & B & datastruktur med element av samma typ \\ 
+  objekt & 3 & & C & en specifik realisering av en algoritm \\ 
+  main & 4 & & D & överförs via parametern args i main \\ 
+  programargument & 5 & & E & används i for-uttryck för att skapa ny samling \\ 
+  datastruktur & 6 & & F & många olika element i en helhet; elementvis åtkomst \\ 
+  samling & 7 & & G & en förändringsbar, indexerbar sekvenssamling \\ 
+  sekvenssamling & 8 & & H & datastruktur med element i en viss ordning \\ 
+  Array & 9 & & I & en oföränderlig, indexerbar sekvenssamling \\ 
+  Vector & 10 & & J & maskinkod sparad och kan köras igen utan kompilering \\ 
+  Range & 11 & & K & samlar variabler och funktioner \\ 
+  yield & 12 & & L & en samling som representerar ett intervall av heltal \\ 
+  map & 13 & & M & maskinkod sparas ej utan skapas vid varje körning \\ 
+  algoritm & 14 & & N & där exekveringen av kompilerat program startar \\ 
+  implementation & 15 & & O & applicerar en funktion på varje element i en samling \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-for-yield-map-solurows-generated.tex b/compendium/generated/quiz-w02-for-yield-map-solurows-generated.tex
index 3a4979f7a..71b447d85 100644
--- a/compendium/generated/quiz-w02-for-yield-map-solurows-generated.tex
+++ b/compendium/generated/quiz-w02-for-yield-map-solurows-generated.tex
@@ -1,6 +1,6 @@
-  \code|for (x <- xs) yield x * 2| & 1 & ~~\Large$\leadsto$~~ &  B & \code|Vector(2, 4, 6)| \\ 
-  \code|for (i <- xs.indices) yield i| & 2 & ~~\Large$\leadsto$~~ &  C & \code|Vector(0, 1, 2)| \\ 
-  \code|xs.map(x => x + 1)    | & 3 & ~~\Large$\leadsto$~~ &  A & \code|Vector(2, 3, 4)| \\ 
-  \code|for (i <- 0 to 1) yield xs(i)| & 4 & ~~\Large$\leadsto$~~ &  D & \code|Vector(1, 2)| \\ 
+  \code|for (x <- xs) yield x * 2| & 1 & ~~\Large$\leadsto$~~ &  C & \code|Vector(2, 4, 6)| \\ 
+  \code|for (i <- xs.indices) yield i| & 2 & ~~\Large$\leadsto$~~ &  F & \code|Vector(0, 1, 2)| \\ 
+  \code|xs.map(x => x + 1)    | & 3 & ~~\Large$\leadsto$~~ &  D & \code|Vector(2, 3, 4)| \\ 
+  \code|for (i <- 0 to 1) yield xs(i)| & 4 & ~~\Large$\leadsto$~~ &  A & \code|Vector(1, 2)| \\ 
   \code|(1 to 3).map(i => i)| & 5 & ~~\Large$\leadsto$~~ &  E & \code|Vector(1, 2, 3)| \\ 
-  \code|(1 until 3).map(i => xs(i))| & 6 & ~~\Large$\leadsto$~~ &  F & \code|Vector(2, 3)| \\ 
\ No newline at end of file
+  \code|(1 until 3).map(i => xs(i))| & 6 & ~~\Large$\leadsto$~~ &  B & \code|Vector(2, 3)| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-for-yield-map-taskrows-generated.tex b/compendium/generated/quiz-w02-for-yield-map-taskrows-generated.tex
index f5b7cb7ed..610a0fb70 100644
--- a/compendium/generated/quiz-w02-for-yield-map-taskrows-generated.tex
+++ b/compendium/generated/quiz-w02-for-yield-map-taskrows-generated.tex
@@ -1,6 +1,6 @@
-  \code|for (x <- xs) yield x * 2| & 1 & & A & \code|Vector(2, 3, 4)| \\ 
-  \code|for (i <- xs.indices) yield i| & 2 & & B & \code|Vector(2, 4, 6)| \\ 
-  \code|xs.map(x => x + 1)    | & 3 & & C & \code|Vector(0, 1, 2)| \\ 
-  \code|for (i <- 0 to 1) yield xs(i)| & 4 & & D & \code|Vector(1, 2)| \\ 
+  \code|for (x <- xs) yield x * 2| & 1 & & A & \code|Vector(1, 2)| \\ 
+  \code|for (i <- xs.indices) yield i| & 2 & & B & \code|Vector(2, 3)| \\ 
+  \code|xs.map(x => x + 1)    | & 3 & & C & \code|Vector(2, 4, 6)| \\ 
+  \code|for (i <- 0 to 1) yield xs(i)| & 4 & & D & \code|Vector(2, 3, 4)| \\ 
   \code|(1 to 3).map(i => i)| & 5 & & E & \code|Vector(1, 2, 3)| \\ 
-  \code|(1 until 3).map(i => xs(i))| & 6 & & F & \code|Vector(2, 3)| \\ 
\ No newline at end of file
+  \code|(1 until 3).map(i => xs(i))| & 6 & & F & \code|Vector(0, 1, 2)| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-hello-scala-java-solurows-generated.tex b/compendium/generated/quiz-w02-hello-scala-java-solurows-generated.tex
index 9b42740dc..53daff537 100644
--- a/compendium/generated/quiz-w02-hello-scala-java-solurows-generated.tex
+++ b/compendium/generated/quiz-w02-hello-scala-java-solurows-generated.tex
@@ -1,4 +1,4 @@
-  \code|def main| & 1 & ~~\Large$\leadsto$~~ &  D & \jcode|public static void main| \\ 
-  \code|Array[String]| & 2 & ~~\Large$\leadsto$~~ &  B & \jcode|String[]| \\ 
-  \code|Unit| & 3 & ~~\Large$\leadsto$~~ &  A & \jcode|void| \\ 
-  \code|println| & 4 & ~~\Large$\leadsto$~~ &  C & \jcode|System.out.println| \\ 
\ No newline at end of file
+  \code|def main| & 1 & ~~\Large$\leadsto$~~ &  A & \jcode|public static void main| \\ 
+  \code|Array[String]| & 2 & ~~\Large$\leadsto$~~ &  C & \jcode|String[]| \\ 
+  \code|Unit| & 3 & ~~\Large$\leadsto$~~ &  B & \jcode|void| \\ 
+  \code|println| & 4 & ~~\Large$\leadsto$~~ &  D & \jcode|System.out.println| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w02-hello-scala-java-taskrows-generated.tex b/compendium/generated/quiz-w02-hello-scala-java-taskrows-generated.tex
index a8d0e144d..9116ff98e 100644
--- a/compendium/generated/quiz-w02-hello-scala-java-taskrows-generated.tex
+++ b/compendium/generated/quiz-w02-hello-scala-java-taskrows-generated.tex
@@ -1,4 +1,4 @@
-  \code|def main| & 1 & & A & \jcode|void| \\ 
-  \code|Array[String]| & 2 & & B & \jcode|String[]| \\ 
-  \code|Unit| & 3 & & C & \jcode|System.out.println| \\ 
-  \code|println| & 4 & & D & \jcode|public static void main| \\ 
\ No newline at end of file
+  \code|def main| & 1 & & A & \jcode|public static void main| \\ 
+  \code|Array[String]| & 2 & & B & \jcode|void| \\ 
+  \code|Unit| & 3 & & C & \jcode|String[]| \\ 
+  \code|println| & 4 & & D & \jcode|System.out.println| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-code-fragments-solurows-generated.tex b/compendium/generated/quiz-w03-code-fragments-solurows-generated.tex
index bc4ba1f86..5355d5eb9 100644
--- a/compendium/generated/quiz-w03-code-fragments-solurows-generated.tex
+++ b/compendium/generated/quiz-w03-code-fragments-solurows-generated.tex
@@ -1,7 +1,7 @@
-  \code|options.indices| & 1 & ~~\Large$\leadsto$~~ &  E & heltalssekvens med alla index i en sekvens \\ 
-  \code|"1X2".toLowercase| & 2 & ~~\Large$\leadsto$~~ &  A & gör om en sträng till små bokstäver \\ 
-  \code|Random.nextInt(n)| & 3 & ~~\Large$\leadsto$~~ &  C & slumptal i intervallet \code|0 until n| \\ 
-  \code|try { } catch { }| & 4 & ~~\Large$\leadsto$~~ &  F & fångar undantag för att förhindra krasch \\ 
-  \code|""" ... """| & 5 & ~~\Large$\leadsto$~~ &  B & sträng som kan sträcka sig över flera kodrader \\ 
-  \code|s.stripMargin| & 6 & ~~\Large$\leadsto$~~ &  D & tar bort marginal till och med vertikalstreck \\ 
-  \code|e.printStackTrace| & 7 & ~~\Large$\leadsto$~~ &  G & skriver ut information om ett undantag \\ 
\ No newline at end of file
+  \code|options.indices| & 1 & ~~\Large$\leadsto$~~ &  F & heltalssekvens med alla index i en sekvens \\ 
+  \code|"1X2".toLowercase| & 2 & ~~\Large$\leadsto$~~ &  C & gör om en sträng till små bokstäver \\ 
+  \code|Random.nextInt(n)| & 3 & ~~\Large$\leadsto$~~ &  D & slumptal i intervallet \code|0 until n| \\ 
+  \code|try { } catch { }| & 4 & ~~\Large$\leadsto$~~ &  B & fångar undantag för att förhindra krasch \\ 
+  \code|""" ... """| & 5 & ~~\Large$\leadsto$~~ &  G & sträng som kan sträcka sig över flera kodrader \\ 
+  \code|s.stripMargin| & 6 & ~~\Large$\leadsto$~~ &  A & tar bort marginal till och med vertikalstreck \\ 
+  \code|e.printStackTrace| & 7 & ~~\Large$\leadsto$~~ &  E & skriver ut information om ett undantag \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-code-fragments-taskrows-generated.tex b/compendium/generated/quiz-w03-code-fragments-taskrows-generated.tex
index 136a37067..33d60de97 100644
--- a/compendium/generated/quiz-w03-code-fragments-taskrows-generated.tex
+++ b/compendium/generated/quiz-w03-code-fragments-taskrows-generated.tex
@@ -1,7 +1,7 @@
-  \code|options.indices| & 1 & & A & gör om en sträng till små bokstäver \\ 
-  \code|"1X2".toLowercase| & 2 & & B & sträng som kan sträcka sig över flera kodrader \\ 
-  \code|Random.nextInt(n)| & 3 & & C & slumptal i intervallet \code|0 until n| \\ 
-  \code|try { } catch { }| & 4 & & D & tar bort marginal till och med vertikalstreck \\ 
-  \code|""" ... """| & 5 & & E & heltalssekvens med alla index i en sekvens \\ 
-  \code|s.stripMargin| & 6 & & F & fångar undantag för att förhindra krasch \\ 
-  \code|e.printStackTrace| & 7 & & G & skriver ut information om ett undantag \\ 
\ No newline at end of file
+  \code|options.indices| & 1 & & A & tar bort marginal till och med vertikalstreck \\ 
+  \code|"1X2".toLowercase| & 2 & & B & fångar undantag för att förhindra krasch \\ 
+  \code|Random.nextInt(n)| & 3 & & C & gör om en sträng till små bokstäver \\ 
+  \code|try { } catch { }| & 4 & & D & slumptal i intervallet \code|0 until n| \\ 
+  \code|""" ... """| & 5 & & E & skriver ut information om ett undantag \\ 
+  \code|s.stripMargin| & 6 & & F & heltalssekvens med alla index i en sekvens \\ 
+  \code|e.printStackTrace| & 7 & & G & sträng som kan sträcka sig över flera kodrader \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-concepts-solurows-generated.tex b/compendium/generated/quiz-w03-concepts-solurows-generated.tex
index f0944abee..542054b0a 100644
--- a/compendium/generated/quiz-w03-concepts-solurows-generated.tex
+++ b/compendium/generated/quiz-w03-concepts-solurows-generated.tex
@@ -1,13 +1,13 @@
-  funktionshuvud & 1 & ~~\Large$\leadsto$~~ &  A & har parameterlista och eventuellt en returtyp \\ 
-  funktionskropp & 2 & ~~\Large$\leadsto$~~ &  G & koden som exekveras vid funktionsanrop \\ 
+  funktionshuvud & 1 & ~~\Large$\leadsto$~~ &  D & har parameterlista och eventuellt en returtyp \\ 
+  funktionskropp & 2 & ~~\Large$\leadsto$~~ &  B & koden som exekveras vid funktionsanrop \\ 
   parameterlista & 3 & ~~\Large$\leadsto$~~ &  M & beskriver namn och typ på parametrar \\ 
-  block & 4 & ~~\Large$\leadsto$~~ &  C & kan ha lokala namn; sista raden ger värdet \\ 
-  namngivna argument & 5 & ~~\Large$\leadsto$~~ &  D & gör att argument kan ges i valfri ordning \\ 
-  defaultargument & 6 & ~~\Large$\leadsto$~~ &  I & gör att argument kan utelämnas \\ 
-  värdeanrop & 7 & ~~\Large$\leadsto$~~ &  E & argumentet evalueras innan anrop \\ 
-  namnanrop & 8 & ~~\Large$\leadsto$~~ &  H & fördröjd evaluering av argument \\ 
-  äkta funktion & 9 & ~~\Large$\leadsto$~~ &  F & ger alltid samma resultat om samma argument \\ 
-  predikat & 10 & ~~\Large$\leadsto$~~ &  B & en funktion som ger ett booleskt värde \\ 
-  slumptalsfrö & 11 & ~~\Large$\leadsto$~~ &  J & ger återupprepningsbar sekvens av pseudoslumptal \\ 
-  anonym funktion & 12 & ~~\Large$\leadsto$~~ &  K & funktion utan namn; kallas även lambda \\ 
-  rekursiv funktion & 13 & ~~\Large$\leadsto$~~ &  L & en funktion som anropar sig själv \\ 
\ No newline at end of file
+  block & 4 & ~~\Large$\leadsto$~~ &  J & kan ha lokala namn; sista raden ger värdet \\ 
+  namngivna argument & 5 & ~~\Large$\leadsto$~~ &  K & gör att argument kan ges i valfri ordning \\ 
+  defaultargument & 6 & ~~\Large$\leadsto$~~ &  H & gör att argument kan utelämnas \\ 
+  värdeanrop & 7 & ~~\Large$\leadsto$~~ &  A & argumentet evalueras innan anrop \\ 
+  namnanrop & 8 & ~~\Large$\leadsto$~~ &  C & fördröjd evaluering av argument \\ 
+  äkta funktion & 9 & ~~\Large$\leadsto$~~ &  E & ger alltid samma resultat om samma argument \\ 
+  predikat & 10 & ~~\Large$\leadsto$~~ &  F & en funktion som ger ett booleskt värde \\ 
+  slumptalsfrö & 11 & ~~\Large$\leadsto$~~ &  G & ger återupprepningsbar sekvens av pseudoslumptal \\ 
+  anonym funktion & 12 & ~~\Large$\leadsto$~~ &  L & funktion utan namn; kallas även lambda \\ 
+  rekursiv funktion & 13 & ~~\Large$\leadsto$~~ &  I & en funktion som anropar sig själv \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-concepts-taskrows-generated.tex b/compendium/generated/quiz-w03-concepts-taskrows-generated.tex
index 62b0a7533..0d137ae09 100644
--- a/compendium/generated/quiz-w03-concepts-taskrows-generated.tex
+++ b/compendium/generated/quiz-w03-concepts-taskrows-generated.tex
@@ -1,13 +1,13 @@
-  funktionshuvud & 1 & & A & har parameterlista och eventuellt en returtyp \\ 
-  funktionskropp & 2 & & B & en funktion som ger ett booleskt värde \\ 
-  parameterlista & 3 & & C & kan ha lokala namn; sista raden ger värdet \\ 
-  block & 4 & & D & gör att argument kan ges i valfri ordning \\ 
-  namngivna argument & 5 & & E & argumentet evalueras innan anrop \\ 
-  defaultargument & 6 & & F & ger alltid samma resultat om samma argument \\ 
-  värdeanrop & 7 & & G & koden som exekveras vid funktionsanrop \\ 
-  namnanrop & 8 & & H & fördröjd evaluering av argument \\ 
-  äkta funktion & 9 & & I & gör att argument kan utelämnas \\ 
-  predikat & 10 & & J & ger återupprepningsbar sekvens av pseudoslumptal \\ 
-  slumptalsfrö & 11 & & K & funktion utan namn; kallas även lambda \\ 
-  anonym funktion & 12 & & L & en funktion som anropar sig själv \\ 
+  funktionshuvud & 1 & & A & argumentet evalueras innan anrop \\ 
+  funktionskropp & 2 & & B & koden som exekveras vid funktionsanrop \\ 
+  parameterlista & 3 & & C & fördröjd evaluering av argument \\ 
+  block & 4 & & D & har parameterlista och eventuellt en returtyp \\ 
+  namngivna argument & 5 & & E & ger alltid samma resultat om samma argument \\ 
+  defaultargument & 6 & & F & en funktion som ger ett booleskt värde \\ 
+  värdeanrop & 7 & & G & ger återupprepningsbar sekvens av pseudoslumptal \\ 
+  namnanrop & 8 & & H & gör att argument kan utelämnas \\ 
+  äkta funktion & 9 & & I & en funktion som anropar sig själv \\ 
+  predikat & 10 & & J & kan ha lokala namn; sista raden ger värdet \\ 
+  slumptalsfrö & 11 & & K & gör att argument kan ges i valfri ordning \\ 
+  anonym funktion & 12 & & L & funktion utan namn; kallas även lambda \\ 
   rekursiv funktion & 13 & & M & beskriver namn och typ på parametrar \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-function-values-solurows-generated.tex b/compendium/generated/quiz-w03-function-values-solurows-generated.tex
index 22418ff6a..2c81451e8 100644
--- a/compendium/generated/quiz-w03-function-values-solurows-generated.tex
+++ b/compendium/generated/quiz-w03-function-values-solurows-generated.tex
@@ -1,5 +1,5 @@
-  \code| öka(-1)     | & 1 & ~~\Large$\leadsto$~~ &  A & \code| 0     | \\ 
-  \code| app(1, öka) | & 2 & ~~\Large$\leadsto$~~ &  E & \code| öka(1)| \\ 
+  \code| öka(-1)     | & 1 & ~~\Large$\leadsto$~~ &  B & \code| 0     | \\ 
+  \code| app(1, öka) | & 2 & ~~\Large$\leadsto$~~ &  A & \code| öka(1)| \\ 
   \code| app(5, f2)  | & 3 & ~~\Large$\leadsto$~~ &  D & \code| 4     | \\ 
   \code| f1(2)       | & 4 & ~~\Large$\leadsto$~~ &  C & \code| 3     | \\ 
-  \code| f2(2)       | & 5 & ~~\Large$\leadsto$~~ &  B & \code| 1     | \\ 
\ No newline at end of file
+  \code| f2(2)       | & 5 & ~~\Large$\leadsto$~~ &  E & \code| 1     | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-function-values-taskrows-generated.tex b/compendium/generated/quiz-w03-function-values-taskrows-generated.tex
index dc0909b8b..ef4048dc6 100644
--- a/compendium/generated/quiz-w03-function-values-taskrows-generated.tex
+++ b/compendium/generated/quiz-w03-function-values-taskrows-generated.tex
@@ -1,5 +1,5 @@
-  \code| öka(-1)     | & 1 & & A & \code| 0     | \\ 
-  \code| app(1, öka) | & 2 & & B & \code| 1     | \\ 
+  \code| öka(-1)     | & 1 & & A & \code| öka(1)| \\ 
+  \code| app(1, öka) | & 2 & & B & \code| 0     | \\ 
   \code| app(5, f2)  | & 3 & & C & \code| 3     | \\ 
   \code| f1(2)       | & 4 & & D & \code| 4     | \\ 
-  \code| f2(2)       | & 5 & & E & \code| öka(1)| \\ 
\ No newline at end of file
+  \code| f2(2)       | & 5 & & E & \code| 1     | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-lambda-solurows-generated.tex b/compendium/generated/quiz-w03-lambda-solurows-generated.tex
index 9e5e0d614..9a8d4fc83 100644
--- a/compendium/generated/quiz-w03-lambda-solurows-generated.tex
+++ b/compendium/generated/quiz-w03-lambda-solurows-generated.tex
@@ -1,5 +1,5 @@
-  \code|(0 to 2).map(i => i + 1)           | & 1 & ~~\Large$\leadsto$~~ &  A & \code|(2 to 4).map(i => i - 1)| \\ 
-  \code|(1 to 3).map(_ + 1)                | & 2 & ~~\Large$\leadsto$~~ &  C & \code|Vector(2, 3, 4)         | \\ 
-  \code|(2 to 4).map(math.pow(2, _))       | & 3 & ~~\Large$\leadsto$~~ &  E & \code|Vector(4.0, 8.0, 16.0)  | \\ 
-  \code|(3 to 5).map(math.pow(_, 2))       | & 4 & ~~\Large$\leadsto$~~ &  D & \code|Vector(9.0, 16.0, 25.0) | \\ 
-  \code|(4 to 6).map(_.toDouble).map(_ / 2)| & 5 & ~~\Large$\leadsto$~~ &  B & \code|Vector(2.0, 2.5, 3.0)   | \\ 
\ No newline at end of file
+  \code|(0 to 2).map(i => i + 1)           | & 1 & ~~\Large$\leadsto$~~ &  E & \code|(2 to 4).map(i => i - 1)| \\ 
+  \code|(1 to 3).map(_ + 1)                | & 2 & ~~\Large$\leadsto$~~ &  D & \code|Vector(2, 3, 4)         | \\ 
+  \code|(2 to 4).map(math.pow(2, _))       | & 3 & ~~\Large$\leadsto$~~ &  C & \code|Vector(4.0, 8.0, 16.0)  | \\ 
+  \code|(3 to 5).map(math.pow(_, 2))       | & 4 & ~~\Large$\leadsto$~~ &  B & \code|Vector(9.0, 16.0, 25.0) | \\ 
+  \code|(4 to 6).map(_.toDouble).map(_ / 2)| & 5 & ~~\Large$\leadsto$~~ &  A & \code|Vector(2.0, 2.5, 3.0)   | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-lambda-taskrows-generated.tex b/compendium/generated/quiz-w03-lambda-taskrows-generated.tex
index ff6385243..5ab7c1885 100644
--- a/compendium/generated/quiz-w03-lambda-taskrows-generated.tex
+++ b/compendium/generated/quiz-w03-lambda-taskrows-generated.tex
@@ -1,5 +1,5 @@
-  \code|(0 to 2).map(i => i + 1)           | & 1 & & A & \code|(2 to 4).map(i => i - 1)| \\ 
-  \code|(1 to 3).map(_ + 1)                | & 2 & & B & \code|Vector(2.0, 2.5, 3.0)   | \\ 
-  \code|(2 to 4).map(math.pow(2, _))       | & 3 & & C & \code|Vector(2, 3, 4)         | \\ 
-  \code|(3 to 5).map(math.pow(_, 2))       | & 4 & & D & \code|Vector(9.0, 16.0, 25.0) | \\ 
-  \code|(4 to 6).map(_.toDouble).map(_ / 2)| & 5 & & E & \code|Vector(4.0, 8.0, 16.0)  | \\ 
\ No newline at end of file
+  \code|(0 to 2).map(i => i + 1)           | & 1 & & A & \code|Vector(2.0, 2.5, 3.0)   | \\ 
+  \code|(1 to 3).map(_ + 1)                | & 2 & & B & \code|Vector(9.0, 16.0, 25.0) | \\ 
+  \code|(2 to 4).map(math.pow(2, _))       | & 3 & & C & \code|Vector(4.0, 8.0, 16.0)  | \\ 
+  \code|(3 to 5).map(math.pow(_, 2))       | & 4 & & D & \code|Vector(2, 3, 4)         | \\ 
+  \code|(4 to 6).map(_.toDouble).map(_ / 2)| & 5 & & E & \code|(2 to 4).map(i => i - 1)| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-yield-map-solurows-generated.tex b/compendium/generated/quiz-w03-yield-map-solurows-generated.tex
index 6d9b4df7f..7943b5da3 100644
--- a/compendium/generated/quiz-w03-yield-map-solurows-generated.tex
+++ b/compendium/generated/quiz-w03-yield-map-solurows-generated.tex
@@ -1,5 +1,5 @@
-  \code|for (i <- 1 to 3) yield öka(i)| & 1 & ~~\Large$\leadsto$~~ &  C & \code|Vector(2, 3, 4)| \\ 
+  \code|for (i <- 1 to 3) yield öka(i)| & 1 & ~~\Large$\leadsto$~~ &  B & \code|Vector(2, 3, 4)| \\ 
   \code|Vector(2, 3, 4).map(i => öka(i))| & 2 & ~~\Large$\leadsto$~~ &  E & \code|xs| \\ 
-  \code|xs.map(öka)| & 3 & ~~\Large$\leadsto$~~ &  B & \code|Vector(4, 5, 6)| \\ 
-  \code|xs.map(öka).map(öka)| & 4 & ~~\Large$\leadsto$~~ &  A & \code|Vector(5, 6, 7)| \\ 
-  \code|xs.foreach(öka)| & 5 & ~~\Large$\leadsto$~~ &  D & \code|()| \\ 
\ No newline at end of file
+  \code|xs.map(öka)| & 3 & ~~\Large$\leadsto$~~ &  C & \code|Vector(4, 5, 6)| \\ 
+  \code|xs.map(öka).map(öka)| & 4 & ~~\Large$\leadsto$~~ &  D & \code|Vector(5, 6, 7)| \\ 
+  \code|xs.foreach(öka)| & 5 & ~~\Large$\leadsto$~~ &  A & \code|()| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w03-yield-map-taskrows-generated.tex b/compendium/generated/quiz-w03-yield-map-taskrows-generated.tex
index 54e591a36..06164df8c 100644
--- a/compendium/generated/quiz-w03-yield-map-taskrows-generated.tex
+++ b/compendium/generated/quiz-w03-yield-map-taskrows-generated.tex
@@ -1,5 +1,5 @@
-  \code|for (i <- 1 to 3) yield öka(i)| & 1 & & A & \code|Vector(5, 6, 7)| \\ 
-  \code|Vector(2, 3, 4).map(i => öka(i))| & 2 & & B & \code|Vector(4, 5, 6)| \\ 
-  \code|xs.map(öka)| & 3 & & C & \code|Vector(2, 3, 4)| \\ 
-  \code|xs.map(öka).map(öka)| & 4 & & D & \code|()| \\ 
+  \code|for (i <- 1 to 3) yield öka(i)| & 1 & & A & \code|()| \\ 
+  \code|Vector(2, 3, 4).map(i => öka(i))| & 2 & & B & \code|Vector(2, 3, 4)| \\ 
+  \code|xs.map(öka)| & 3 & & C & \code|Vector(4, 5, 6)| \\ 
+  \code|xs.map(öka).map(öka)| & 4 & & D & \code|Vector(5, 6, 7)| \\ 
   \code|xs.foreach(öka)| & 5 & & E & \code|xs| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w04-concepts-solurows-generated.tex b/compendium/generated/quiz-w04-concepts-solurows-generated.tex
index 222425170..44fa8c9ca 100644
--- a/compendium/generated/quiz-w04-concepts-solurows-generated.tex
+++ b/compendium/generated/quiz-w04-concepts-solurows-generated.tex
@@ -1,15 +1,15 @@
-  modul & 1 & ~~\Large$\leadsto$~~ &  O & kodenhet med abstraktioner som kan återanvändas \\ 
-  singelobjekt & 2 & ~~\Large$\leadsto$~~ &  F & modul som kan ha tillstånd; finns i en enda upplaga \\ 
-  paket & 3 & ~~\Large$\leadsto$~~ &  C & modul som skapar namnrymd; maskinkod får egen katalog \\ 
-  import & 4 & ~~\Large$\leadsto$~~ &  E & gör namn tillgängligt utan att hela sökvägen behövs \\ 
-  lat initialisering & 5 & ~~\Large$\leadsto$~~ &  D & allokering sker först när namnet refereras \\ 
-  medlem & 6 & ~~\Large$\leadsto$~~ &  J & tillhör ett objekt; nås med punktnotation om synlig \\ 
-  attribut & 7 & ~~\Large$\leadsto$~~ &  K & variabel som utgör (del av) ett objekts tillstånd \\ 
-  metod & 8 & ~~\Large$\leadsto$~~ &  B & funktion som är medlem av ett objekt \\ 
-  privat & 9 & ~~\Large$\leadsto$~~ &  I & modifierar synligheten av en objektmedlem \\ 
-  överlagring & 10 & ~~\Large$\leadsto$~~ &  G & metoder med samma namn men olika parametertyper \\ 
-  namnskuggning & 11 & ~~\Large$\leadsto$~~ &  M & lokalt namn döljer samma namn i omgivande block \\ 
-  namnrymd & 12 & ~~\Large$\leadsto$~~ &  H & omgivning där är alla namn är unika \\ 
-  uniform access & 13 & ~~\Large$\leadsto$~~ &  A & ändring mellan def och val påverkar ej användning \\ 
-  punktnotation & 14 & ~~\Large$\leadsto$~~ &  N & används för att komma åt icke-privata delar \\ 
-  typalias & 15 & ~~\Large$\leadsto$~~ &  L & alternativt namn på typ som ofta ökar läsbarheten \\ 
\ No newline at end of file
+  modul & 1 & ~~\Large$\leadsto$~~ &  H & kodenhet med abstraktioner som kan återanvändas \\ 
+  singelobjekt & 2 & ~~\Large$\leadsto$~~ &  B & modul som kan ha tillstånd; finns i en enda upplaga \\ 
+  paket & 3 & ~~\Large$\leadsto$~~ &  A & modul som skapar namnrymd; maskinkod får egen katalog \\ 
+  import & 4 & ~~\Large$\leadsto$~~ &  M & gör namn tillgängligt utan att hela sökvägen behövs \\ 
+  lat initialisering & 5 & ~~\Large$\leadsto$~~ &  I & allokering sker först när namnet refereras \\ 
+  medlem & 6 & ~~\Large$\leadsto$~~ &  K & tillhör ett objekt; nås med punktnotation om synlig \\ 
+  attribut & 7 & ~~\Large$\leadsto$~~ &  J & variabel som utgör (del av) ett objekts tillstånd \\ 
+  metod & 8 & ~~\Large$\leadsto$~~ &  G & funktion som är medlem av ett objekt \\ 
+  privat & 9 & ~~\Large$\leadsto$~~ &  O & modifierar synligheten av en objektmedlem \\ 
+  överlagring & 10 & ~~\Large$\leadsto$~~ &  L & metoder med samma namn men olika parametertyper \\ 
+  namnskuggning & 11 & ~~\Large$\leadsto$~~ &  E & lokalt namn döljer samma namn i omgivande block \\ 
+  namnrymd & 12 & ~~\Large$\leadsto$~~ &  N & omgivning där är alla namn är unika \\ 
+  uniform access & 13 & ~~\Large$\leadsto$~~ &  F & ändring mellan def och val påverkar ej användning \\ 
+  punktnotation & 14 & ~~\Large$\leadsto$~~ &  C & används för att komma åt icke-privata delar \\ 
+  typalias & 15 & ~~\Large$\leadsto$~~ &  D & alternativt namn på typ som ofta ökar läsbarheten \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w04-concepts-taskrows-generated.tex b/compendium/generated/quiz-w04-concepts-taskrows-generated.tex
index 8d4924775..84a24ce22 100644
--- a/compendium/generated/quiz-w04-concepts-taskrows-generated.tex
+++ b/compendium/generated/quiz-w04-concepts-taskrows-generated.tex
@@ -1,15 +1,15 @@
-  modul & 1 & & A & ändring mellan def och val påverkar ej användning \\ 
-  singelobjekt & 2 & & B & funktion som är medlem av ett objekt \\ 
-  paket & 3 & & C & modul som skapar namnrymd; maskinkod får egen katalog \\ 
-  import & 4 & & D & allokering sker först när namnet refereras \\ 
-  lat initialisering & 5 & & E & gör namn tillgängligt utan att hela sökvägen behövs \\ 
-  medlem & 6 & & F & modul som kan ha tillstånd; finns i en enda upplaga \\ 
-  attribut & 7 & & G & metoder med samma namn men olika parametertyper \\ 
-  metod & 8 & & H & omgivning där är alla namn är unika \\ 
-  privat & 9 & & I & modifierar synligheten av en objektmedlem \\ 
-  överlagring & 10 & & J & tillhör ett objekt; nås med punktnotation om synlig \\ 
-  namnskuggning & 11 & & K & variabel som utgör (del av) ett objekts tillstånd \\ 
-  namnrymd & 12 & & L & alternativt namn på typ som ofta ökar läsbarheten \\ 
-  uniform access & 13 & & M & lokalt namn döljer samma namn i omgivande block \\ 
-  punktnotation & 14 & & N & används för att komma åt icke-privata delar \\ 
-  typalias & 15 & & O & kodenhet med abstraktioner som kan återanvändas \\ 
\ No newline at end of file
+  modul & 1 & & A & modul som skapar namnrymd; maskinkod får egen katalog \\ 
+  singelobjekt & 2 & & B & modul som kan ha tillstånd; finns i en enda upplaga \\ 
+  paket & 3 & & C & används för att komma åt icke-privata delar \\ 
+  import & 4 & & D & alternativt namn på typ som ofta ökar läsbarheten \\ 
+  lat initialisering & 5 & & E & lokalt namn döljer samma namn i omgivande block \\ 
+  medlem & 6 & & F & ändring mellan def och val påverkar ej användning \\ 
+  attribut & 7 & & G & funktion som är medlem av ett objekt \\ 
+  metod & 8 & & H & kodenhet med abstraktioner som kan återanvändas \\ 
+  privat & 9 & & I & allokering sker först när namnet refereras \\ 
+  överlagring & 10 & & J & variabel som utgör (del av) ett objekts tillstånd \\ 
+  namnskuggning & 11 & & K & tillhör ett objekt; nås med punktnotation om synlig \\ 
+  namnrymd & 12 & & L & metoder med samma namn men olika parametertyper \\ 
+  uniform access & 13 & & M & gör namn tillgängligt utan att hela sökvägen behövs \\ 
+  punktnotation & 14 & & N & omgivning där är alla namn är unika \\ 
+  typalias & 15 & & O & modifierar synligheten av en objektmedlem \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-case-class-solurows-generated.tex b/compendium/generated/quiz-w05-case-class-solurows-generated.tex
index c009db7c6..4e53b83ae 100644
--- a/compendium/generated/quiz-w05-case-class-solurows-generated.tex
+++ b/compendium/generated/quiz-w05-case-class-solurows-generated.tex
@@ -1,7 +1,7 @@
-  \code|val p1 = new Pt(1,2)        | & 1 & ~~\Large$\leadsto$~~ &  B & \code|Pt(1,2)| \\ 
-  \code|val p2 = Pt(y=3)            | & 2 & ~~\Large$\leadsto$~~ &  F & \code|Pt(0,3)| \\ 
+  \code|val p1 = new Pt(1,2)        | & 1 & ~~\Large$\leadsto$~~ &  C & \code|Pt(1,2)| \\ 
+  \code|val p2 = Pt(y=3)            | & 2 & ~~\Large$\leadsto$~~ &  B & \code|Pt(0,3)| \\ 
   \code|val p3 = new MutablePt(5, 6)| & 3 & ~~\Large$\leadsto$~~ &  E & \code|MPt(5,6)| \\ 
-  \code|val p4 = Mutable()          | & 4 & ~~\Large$\leadsto$~~ &  C & \code|error: not found: value| \\ 
-  \code|p2.moved(dx=1) == Pt(1, 3)  | & 5 & ~~\Large$\leadsto$~~ &  D & \code|true| \\ 
-  \code|p3.move(dy=1) == new MutablePt(5,7)| & 6 & ~~\Large$\leadsto$~~ &  A & \code|false| \\ 
+  \code|val p4 = Mutable()          | & 4 & ~~\Large$\leadsto$~~ &  D & \code|error: not found: value| \\ 
+  \code|p2.moved(dx=1) == Pt(1, 3)  | & 5 & ~~\Large$\leadsto$~~ &  A & \code|true| \\ 
+  \code|p3.move(dy=1) == new MutablePt(5,7)| & 6 & ~~\Large$\leadsto$~~ &  F & \code|false| \\ 
   \code|p2 == p3                      | & 7 & ~~\Large$\leadsto$~~ &  G & \verb|warning: always false| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-case-class-taskrows-generated.tex b/compendium/generated/quiz-w05-case-class-taskrows-generated.tex
index 6976cd405..507f58ec2 100644
--- a/compendium/generated/quiz-w05-case-class-taskrows-generated.tex
+++ b/compendium/generated/quiz-w05-case-class-taskrows-generated.tex
@@ -1,7 +1,7 @@
-  \code|val p1 = new Pt(1,2)        | & 1 & & A & \code|false| \\ 
-  \code|val p2 = Pt(y=3)            | & 2 & & B & \code|Pt(1,2)| \\ 
-  \code|val p3 = new MutablePt(5, 6)| & 3 & & C & \code|error: not found: value| \\ 
-  \code|val p4 = Mutable()          | & 4 & & D & \code|true| \\ 
+  \code|val p1 = new Pt(1,2)        | & 1 & & A & \code|true| \\ 
+  \code|val p2 = Pt(y=3)            | & 2 & & B & \code|Pt(0,3)| \\ 
+  \code|val p3 = new MutablePt(5, 6)| & 3 & & C & \code|Pt(1,2)| \\ 
+  \code|val p4 = Mutable()          | & 4 & & D & \code|error: not found: value| \\ 
   \code|p2.moved(dx=1) == Pt(1, 3)  | & 5 & & E & \code|MPt(5,6)| \\ 
-  \code|p3.move(dy=1) == new MutablePt(5,7)| & 6 & & F & \code|Pt(0,3)| \\ 
+  \code|p3.move(dy=1) == new MutablePt(5,7)| & 6 & & F & \code|false| \\ 
   \code|p2 == p3                      | & 7 & & G & \verb|warning: always false| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-class-arg-solurows-generated.tex b/compendium/generated/quiz-w05-class-arg-solurows-generated.tex
index 3bf91abad..375a27a13 100644
--- a/compendium/generated/quiz-w05-class-arg-solurows-generated.tex
+++ b/compendium/generated/quiz-w05-class-arg-solurows-generated.tex
@@ -1,6 +1,6 @@
-  \code|val p1 = new Point3D        | & 1 & ~~\Large$\leadsto$~~ &  B & \verb|p1: Point3D = Point3D@2eb37eee| \\ 
-  \code|val p2 = new Point3D(y = 1) | & 2 & ~~\Large$\leadsto$~~ &  D & \verb|p2: Point3D = Point3D@65a9e8d7| \\ 
-  \code|(new Point3D(z = 2)).z      | & 3 & ~~\Large$\leadsto$~~ &  A & \code|error: not found: value| \\ 
-  \code|p2.y = 0                    | & 4 & ~~\Large$\leadsto$~~ &  C & \code|error: reassignment to val| \\ 
-  \code|p2.y == 0                   | & 5 & ~~\Large$\leadsto$~~ &  F & \code|false| \\ 
+  \code|val p1 = new Point3D        | & 1 & ~~\Large$\leadsto$~~ &  F & \verb|p1: Point3D = Point3D@2eb37eee| \\ 
+  \code|val p2 = new Point3D(y = 1) | & 2 & ~~\Large$\leadsto$~~ &  A & \verb|p2: Point3D = Point3D@65a9e8d7| \\ 
+  \code|(new Point3D(z = 2)).z      | & 3 & ~~\Large$\leadsto$~~ &  C & \code|error: not found: value| \\ 
+  \code|p2.y = 0                    | & 4 & ~~\Large$\leadsto$~~ &  D & \code|error: reassignment to val| \\ 
+  \code|p2.y == 0                   | & 5 & ~~\Large$\leadsto$~~ &  B & \code|false| \\ 
   \code|p1.x == (new Point3D).x     | & 6 & ~~\Large$\leadsto$~~ &  E & \code|true| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-class-arg-taskrows-generated.tex b/compendium/generated/quiz-w05-class-arg-taskrows-generated.tex
index bb1dca9a3..fe7adc050 100644
--- a/compendium/generated/quiz-w05-class-arg-taskrows-generated.tex
+++ b/compendium/generated/quiz-w05-class-arg-taskrows-generated.tex
@@ -1,6 +1,6 @@
-  \code|val p1 = new Point3D        | & 1 & & A & \code|error: not found: value| \\ 
-  \code|val p2 = new Point3D(y = 1) | & 2 & & B & \verb|p1: Point3D = Point3D@2eb37eee| \\ 
-  \code|(new Point3D(z = 2)).z      | & 3 & & C & \code|error: reassignment to val| \\ 
-  \code|p2.y = 0                    | & 4 & & D & \verb|p2: Point3D = Point3D@65a9e8d7| \\ 
+  \code|val p1 = new Point3D        | & 1 & & A & \verb|p2: Point3D = Point3D@65a9e8d7| \\ 
+  \code|val p2 = new Point3D(y = 1) | & 2 & & B & \code|false| \\ 
+  \code|(new Point3D(z = 2)).z      | & 3 & & C & \code|error: not found: value| \\ 
+  \code|p2.y = 0                    | & 4 & & D & \code|error: reassignment to val| \\ 
   \code|p2.y == 0                   | & 5 & & E & \code|true| \\ 
-  \code|p1.x == (new Point3D).x     | & 6 & & F & \code|false| \\ 
\ No newline at end of file
+  \code|p1.x == (new Point3D).x     | & 6 & & F & \verb|p1: Point3D = Point3D@2eb37eee| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-class-instance-solurows-generated.tex b/compendium/generated/quiz-w05-class-instance-solurows-generated.tex
index b9fbc8a09..c3a4575a5 100644
--- a/compendium/generated/quiz-w05-class-instance-solurows-generated.tex
+++ b/compendium/generated/quiz-w05-class-instance-solurows-generated.tex
@@ -1,8 +1,8 @@
-  \code|Singelpunkt.x               | & 1 & ~~\Large$\leadsto$~~ &  B & \code|1| \\ 
-  \code|Punkt.x                     | & 2 & ~~\Large$\leadsto$~~ &  G & \code|error: not found: value| \\ 
-  \code|val p  = new Singelpunkt    | & 3 & ~~\Large$\leadsto$~~ &  A & \verb|error: not found: type| \\ 
-  \code|val p1 = new Punkt          | & 4 & ~~\Large$\leadsto$~~ &  C & \verb|p1: Punkt = Punkt@27a1a53c| \\ 
-  \code|val p2 = new Punkt          | & 5 & ~~\Large$\leadsto$~~ &  E & \verb|p2: Punkt = Punkt@51ab04bd| \\ 
-  \code|{ p1.x = 1; p2.x }          | & 6 & ~~\Large$\leadsto$~~ &  F & \code|3| \\ 
-  \code|(new Punkt).y               | & 7 & ~~\Large$\leadsto$~~ &  D & \code|2| \\ 
-  \code|{ val p: Punkt = null; p.x }| & 8 & ~~\Large$\leadsto$~~ &  H & \code|java.lang.NullPointerException| \\ 
\ No newline at end of file
+  \code|Singelpunkt.x               | & 1 & ~~\Large$\leadsto$~~ &  H & \code|1| \\ 
+  \code|Punkt.x                     | & 2 & ~~\Large$\leadsto$~~ &  A & \code|error: not found: value| \\ 
+  \code|val p  = new Singelpunkt    | & 3 & ~~\Large$\leadsto$~~ &  C & \verb|error: not found: type| \\ 
+  \code|val p1 = new Punkt          | & 4 & ~~\Large$\leadsto$~~ &  G & \verb|p1: Punkt = Punkt@27a1a53c| \\ 
+  \code|val p2 = new Punkt          | & 5 & ~~\Large$\leadsto$~~ &  B & \verb|p2: Punkt = Punkt@51ab04bd| \\ 
+  \code|{ p1.x = 1; p2.x }          | & 6 & ~~\Large$\leadsto$~~ &  D & \code|3| \\ 
+  \code|(new Punkt).y               | & 7 & ~~\Large$\leadsto$~~ &  E & \code|2| \\ 
+  \code|{ val p: Punkt = null; p.x }| & 8 & ~~\Large$\leadsto$~~ &  F & \code|java.lang.NullPointerException| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-class-instance-taskrows-generated.tex b/compendium/generated/quiz-w05-class-instance-taskrows-generated.tex
index 5bd3ef74a..d9a3a5ea8 100644
--- a/compendium/generated/quiz-w05-class-instance-taskrows-generated.tex
+++ b/compendium/generated/quiz-w05-class-instance-taskrows-generated.tex
@@ -1,8 +1,8 @@
-  \code|Singelpunkt.x               | & 1 & & A & \verb|error: not found: type| \\ 
-  \code|Punkt.x                     | & 2 & & B & \code|1| \\ 
-  \code|val p  = new Singelpunkt    | & 3 & & C & \verb|p1: Punkt = Punkt@27a1a53c| \\ 
-  \code|val p1 = new Punkt          | & 4 & & D & \code|2| \\ 
-  \code|val p2 = new Punkt          | & 5 & & E & \verb|p2: Punkt = Punkt@51ab04bd| \\ 
-  \code|{ p1.x = 1; p2.x }          | & 6 & & F & \code|3| \\ 
-  \code|(new Punkt).y               | & 7 & & G & \code|error: not found: value| \\ 
-  \code|{ val p: Punkt = null; p.x }| & 8 & & H & \code|java.lang.NullPointerException| \\ 
\ No newline at end of file
+  \code|Singelpunkt.x               | & 1 & & A & \code|error: not found: value| \\ 
+  \code|Punkt.x                     | & 2 & & B & \verb|p2: Punkt = Punkt@51ab04bd| \\ 
+  \code|val p  = new Singelpunkt    | & 3 & & C & \verb|error: not found: type| \\ 
+  \code|val p1 = new Punkt          | & 4 & & D & \code|3| \\ 
+  \code|val p2 = new Punkt          | & 5 & & E & \code|2| \\ 
+  \code|{ p1.x = 1; p2.x }          | & 6 & & F & \code|java.lang.NullPointerException| \\ 
+  \code|(new Punkt).y               | & 7 & & G & \verb|p1: Punkt = Punkt@27a1a53c| \\ 
+  \code|{ val p: Punkt = null; p.x }| & 8 & & H & \code|1| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-class-param-solurows-generated.tex b/compendium/generated/quiz-w05-class-param-solurows-generated.tex
index 1f72be378..bcf2444af 100644
--- a/compendium/generated/quiz-w05-class-param-solurows-generated.tex
+++ b/compendium/generated/quiz-w05-class-param-solurows-generated.tex
@@ -1,7 +1,7 @@
-  \code|val p1 = Point(1, 2)        | & 1 & ~~\Large$\leadsto$~~ &  D & \code|error: not found: value| \\ 
-  \code|val p2 = new Point          | & 2 & ~~\Large$\leadsto$~~ &  A & \code|error: not enough arguments| \\ 
-  \code|val p1 = new Point(1, 2)    | & 3 & ~~\Large$\leadsto$~~ &  B & \verb|p1: Point = Point@30ef773e| \\ 
-  \code|val p2 = new Point(3, 4)    | & 4 & ~~\Large$\leadsto$~~ &  G & \verb|p2: Point = Point@218cf600| \\ 
-  \code|p2.x - p1.x                 | & 5 & ~~\Large$\leadsto$~~ &  C & \code|2| \\ 
-  \code|(new Point(0, 1)).y         | & 6 & ~~\Large$\leadsto$~~ &  E & \code|1| \\ 
-  \code|new Point(0, 1, 2)          | & 7 & ~~\Large$\leadsto$~~ &  F & \code|error: too many arguments| \\ 
\ No newline at end of file
+  \code|val p1 = Point(1, 2)        | & 1 & ~~\Large$\leadsto$~~ &  C & \code|error: not found: value| \\ 
+  \code|val p2 = new Point          | & 2 & ~~\Large$\leadsto$~~ &  E & \code|error: not enough arguments| \\ 
+  \code|val p1 = new Point(1, 2)    | & 3 & ~~\Large$\leadsto$~~ &  G & \verb|p1: Point = Point@30ef773e| \\ 
+  \code|val p2 = new Point(3, 4)    | & 4 & ~~\Large$\leadsto$~~ &  B & \verb|p2: Point = Point@218cf600| \\ 
+  \code|p2.x - p1.x                 | & 5 & ~~\Large$\leadsto$~~ &  F & \code|2| \\ 
+  \code|(new Point(0, 1)).y         | & 6 & ~~\Large$\leadsto$~~ &  A & \code|1| \\ 
+  \code|new Point(0, 1, 2)          | & 7 & ~~\Large$\leadsto$~~ &  D & \code|error: too many arguments| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-class-param-taskrows-generated.tex b/compendium/generated/quiz-w05-class-param-taskrows-generated.tex
index bf96e1a43..5ba678f30 100644
--- a/compendium/generated/quiz-w05-class-param-taskrows-generated.tex
+++ b/compendium/generated/quiz-w05-class-param-taskrows-generated.tex
@@ -1,7 +1,7 @@
-  \code|val p1 = Point(1, 2)        | & 1 & & A & \code|error: not enough arguments| \\ 
-  \code|val p2 = new Point          | & 2 & & B & \verb|p1: Point = Point@30ef773e| \\ 
-  \code|val p1 = new Point(1, 2)    | & 3 & & C & \code|2| \\ 
-  \code|val p2 = new Point(3, 4)    | & 4 & & D & \code|error: not found: value| \\ 
-  \code|p2.x - p1.x                 | & 5 & & E & \code|1| \\ 
-  \code|(new Point(0, 1)).y         | & 6 & & F & \code|error: too many arguments| \\ 
-  \code|new Point(0, 1, 2)          | & 7 & & G & \verb|p2: Point = Point@218cf600| \\ 
\ No newline at end of file
+  \code|val p1 = Point(1, 2)        | & 1 & & A & \code|1| \\ 
+  \code|val p2 = new Point          | & 2 & & B & \verb|p2: Point = Point@218cf600| \\ 
+  \code|val p1 = new Point(1, 2)    | & 3 & & C & \code|error: not found: value| \\ 
+  \code|val p2 = new Point(3, 4)    | & 4 & & D & \code|error: too many arguments| \\ 
+  \code|p2.x - p1.x                 | & 5 & & E & \code|error: not enough arguments| \\ 
+  \code|(new Point(0, 1)).y         | & 6 & & F & \code|2| \\ 
+  \code|new Point(0, 1, 2)          | & 7 & & G & \verb|p1: Point = Point@30ef773e| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-concepts-solurows-generated.tex b/compendium/generated/quiz-w05-concepts-solurows-generated.tex
index 8bbc7ed70..6937476f6 100644
--- a/compendium/generated/quiz-w05-concepts-solurows-generated.tex
+++ b/compendium/generated/quiz-w05-concepts-solurows-generated.tex
@@ -1,13 +1,13 @@
-  klass & 1 & ~~\Large$\leadsto$~~ &  J & en mall för att skapa flera instanser av samma typ \\ 
-  instans & 2 & ~~\Large$\leadsto$~~ &  I & upplaga av ett objekt med eget tillståndsminne \\ 
-  konstruktor & 3 & ~~\Large$\leadsto$~~ &  B & skapar instans, allokerar plats för tillståndsminne \\ 
-  klassparameter & 4 & ~~\Large$\leadsto$~~ &  H & binds till argument som ges vid konstruktion \\ 
+  klass & 1 & ~~\Large$\leadsto$~~ &  K & en mall för att skapa flera instanser av samma typ \\ 
+  instans & 2 & ~~\Large$\leadsto$~~ &  F & upplaga av ett objekt med eget tillståndsminne \\ 
+  konstruktor & 3 & ~~\Large$\leadsto$~~ &  H & skapar instans, allokerar plats för tillståndsminne \\ 
+  klassparameter & 4 & ~~\Large$\leadsto$~~ &  J & binds till argument som ges vid konstruktion \\ 
   referenslikhet & 5 & ~~\Large$\leadsto$~~ &  G & instanser anses olika även om tillstånden är lika \\ 
-  innehållslikhet & 6 & ~~\Large$\leadsto$~~ &  M & instanser anses lika om de har samma tillstånd \\ 
-  case-klass & 7 & ~~\Large$\leadsto$~~ &  C & slipper skriva new; automatisk innehållslikhet \\ 
-  getter & 8 & ~~\Large$\leadsto$~~ &  E & indirekt åtkomst av attributvärde \\ 
-  setter & 9 & ~~\Large$\leadsto$~~ &  K & indirekt tilldelning av attributvärde \\ 
-  kompanjonsobjekt & 10 & ~~\Large$\leadsto$~~ &  D & ser privata medlemmar i klass med samma namn \\ 
-  fabriksmetod & 11 & ~~\Large$\leadsto$~~ &  F & hjälpfunktion för indirekt konstruktonsanrop \\ 
-  \code|null| & 12 & ~~\Large$\leadsto$~~ &  A & ett värde som ej refererar till någon instans \\ 
-  \code|new| & 13 & ~~\Large$\leadsto$~~ &  L & nyckelord vid direkt instansiering av klass \\ 
\ No newline at end of file
+  innehållslikhet & 6 & ~~\Large$\leadsto$~~ &  L & instanser anses lika om de har samma tillstånd \\ 
+  case-klass & 7 & ~~\Large$\leadsto$~~ &  E & slipper skriva new; automatisk innehållslikhet \\ 
+  getter & 8 & ~~\Large$\leadsto$~~ &  C & indirekt åtkomst av attributvärde \\ 
+  setter & 9 & ~~\Large$\leadsto$~~ &  D & indirekt tilldelning av attributvärde \\ 
+  kompanjonsobjekt & 10 & ~~\Large$\leadsto$~~ &  B & ser privata medlemmar i klass med samma namn \\ 
+  fabriksmetod & 11 & ~~\Large$\leadsto$~~ &  I & hjälpfunktion för indirekt konstruktonsanrop \\ 
+  \code|null| & 12 & ~~\Large$\leadsto$~~ &  M & ett värde som ej refererar till någon instans \\ 
+  \code|new| & 13 & ~~\Large$\leadsto$~~ &  A & nyckelord vid direkt instansiering av klass \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w05-concepts-taskrows-generated.tex b/compendium/generated/quiz-w05-concepts-taskrows-generated.tex
index 1e09255b4..16d4ea5af 100644
--- a/compendium/generated/quiz-w05-concepts-taskrows-generated.tex
+++ b/compendium/generated/quiz-w05-concepts-taskrows-generated.tex
@@ -1,13 +1,13 @@
-  klass & 1 & & A & ett värde som ej refererar till någon instans \\ 
-  instans & 2 & & B & skapar instans, allokerar plats för tillståndsminne \\ 
-  konstruktor & 3 & & C & slipper skriva new; automatisk innehållslikhet \\ 
-  klassparameter & 4 & & D & ser privata medlemmar i klass med samma namn \\ 
-  referenslikhet & 5 & & E & indirekt åtkomst av attributvärde \\ 
-  innehållslikhet & 6 & & F & hjälpfunktion för indirekt konstruktonsanrop \\ 
+  klass & 1 & & A & nyckelord vid direkt instansiering av klass \\ 
+  instans & 2 & & B & ser privata medlemmar i klass med samma namn \\ 
+  konstruktor & 3 & & C & indirekt åtkomst av attributvärde \\ 
+  klassparameter & 4 & & D & indirekt tilldelning av attributvärde \\ 
+  referenslikhet & 5 & & E & slipper skriva new; automatisk innehållslikhet \\ 
+  innehållslikhet & 6 & & F & upplaga av ett objekt med eget tillståndsminne \\ 
   case-klass & 7 & & G & instanser anses olika även om tillstånden är lika \\ 
-  getter & 8 & & H & binds till argument som ges vid konstruktion \\ 
-  setter & 9 & & I & upplaga av ett objekt med eget tillståndsminne \\ 
-  kompanjonsobjekt & 10 & & J & en mall för att skapa flera instanser av samma typ \\ 
-  fabriksmetod & 11 & & K & indirekt tilldelning av attributvärde \\ 
-  \code|null| & 12 & & L & nyckelord vid direkt instansiering av klass \\ 
-  \code|new| & 13 & & M & instanser anses lika om de har samma tillstånd \\ 
\ No newline at end of file
+  getter & 8 & & H & skapar instans, allokerar plats för tillståndsminne \\ 
+  setter & 9 & & I & hjälpfunktion för indirekt konstruktonsanrop \\ 
+  kompanjonsobjekt & 10 & & J & binds till argument som ges vid konstruktion \\ 
+  fabriksmetod & 11 & & K & en mall för att skapa flera instanser av samma typ \\ 
+  \code|null| & 12 & & L & instanser anses lika om de har samma tillstånd \\ 
+  \code|new| & 13 & & M & ett värde som ej refererar till någon instans \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-abstract-collections-solurows-generated.tex b/compendium/generated/quiz-w06-abstract-collections-solurows-generated.tex
index dcf60f600..2ce532dd6 100644
--- a/compendium/generated/quiz-w06-abstract-collections-solurows-generated.tex
+++ b/compendium/generated/quiz-w06-abstract-collections-solurows-generated.tex
@@ -1,3 +1,3 @@
-  Traversable & 1 & ~~\Large$\leadsto$~~ &  C & bastyp för alla samlingar, har metoden \code|foreach| \\ 
-  Iterable & 2 & ~~\Large$\leadsto$~~ &  B & är traverserbar med hjälp av metoden \code|iterator| \\ 
-  Seq & 3 & ~~\Large$\leadsto$~~ &  A & bastyp för alla sekvenssamlingar, indexposition från 0 \\ 
\ No newline at end of file
+  Traversable & 1 & ~~\Large$\leadsto$~~ &  A & bastyp för alla samlingar, har metoden \code|foreach| \\ 
+  Iterable & 2 & ~~\Large$\leadsto$~~ &  C & är traverserbar med hjälp av metoden \code|iterator| \\ 
+  Seq & 3 & ~~\Large$\leadsto$~~ &  B & bastyp för alla sekvenssamlingar, indexposition från 0 \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-abstract-collections-taskrows-generated.tex b/compendium/generated/quiz-w06-abstract-collections-taskrows-generated.tex
index 920bad6fc..b9d12efb8 100644
--- a/compendium/generated/quiz-w06-abstract-collections-taskrows-generated.tex
+++ b/compendium/generated/quiz-w06-abstract-collections-taskrows-generated.tex
@@ -1,3 +1,3 @@
-  Traversable & 1 & & A & bastyp för alla sekvenssamlingar, indexposition från 0 \\ 
-  Iterable & 2 & & B & är traverserbar med hjälp av metoden \code|iterator| \\ 
-  Seq & 3 & & C & bastyp för alla samlingar, har metoden \code|foreach| \\ 
\ No newline at end of file
+  Traversable & 1 & & A & bastyp för alla samlingar, har metoden \code|foreach| \\ 
+  Iterable & 2 & & B & bastyp för alla sekvenssamlingar, indexposition från 0 \\ 
+  Seq & 3 & & C & är traverserbar med hjälp av metoden \code|iterator| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-concepts-solurows-generated.tex b/compendium/generated/quiz-w06-concepts-solurows-generated.tex
index a4ec19948..2fde554c3 100644
--- a/compendium/generated/quiz-w06-concepts-solurows-generated.tex
+++ b/compendium/generated/quiz-w06-concepts-solurows-generated.tex
@@ -1,12 +1,12 @@
-  element & 1 & ~~\Large$\leadsto$~~ &  I & objekt i en datastruktur \\ 
-  samling & 2 & ~~\Large$\leadsto$~~ &  H & datastruktur med element av samma typ \\ 
-  samlingsbibliotek & 3 & ~~\Large$\leadsto$~~ &  G & många färdiga samlingar med olika egenskaper \\ 
-  sekvens(samling) & 4 & ~~\Large$\leadsto$~~ &  A & noll el. flera element av samma typ i viss ordning \\ 
-  sekvensalgoritm & 5 & ~~\Large$\leadsto$~~ &  C & lösning på problem som drar nytta av sekvenssamling \\ 
-  ordning & 6 & ~~\Large$\leadsto$~~ &  E & definierar hur element av en viss typ ska ordnas \\ 
-  sortering & 7 & ~~\Large$\leadsto$~~ &  F & algoritm som ordnar element i en viss ordning \\ 
-  söking & 8 & ~~\Large$\leadsto$~~ &  J & algoritm som letar upp element enligt sökkriterium \\ 
-  linjärsökning & 9 & ~~\Large$\leadsto$~~ &  L & sökalgoritm som letar i sekvens tills element hittas \\ 
-  registrering & 10 & ~~\Large$\leadsto$~~ &  D & algoritm som räknar element med vissa egenskaper \\ 
-  tidskomplexitet & 11 & ~~\Large$\leadsto$~~ &  K & hur exekveringstiden växer med problemstorleken \\ 
+  element & 1 & ~~\Large$\leadsto$~~ &  D & objekt i en datastruktur \\ 
+  samling & 2 & ~~\Large$\leadsto$~~ &  K & datastruktur med element av samma typ \\ 
+  samlingsbibliotek & 3 & ~~\Large$\leadsto$~~ &  H & många färdiga samlingar med olika egenskaper \\ 
+  sekvens(samling) & 4 & ~~\Large$\leadsto$~~ &  F & noll el. flera element av samma typ i viss ordning \\ 
+  sekvensalgoritm & 5 & ~~\Large$\leadsto$~~ &  I & lösning på problem som drar nytta av sekvenssamling \\ 
+  ordning & 6 & ~~\Large$\leadsto$~~ &  A & definierar hur element av en viss typ ska ordnas \\ 
+  sortering & 7 & ~~\Large$\leadsto$~~ &  E & algoritm som ordnar element i en viss ordning \\ 
+  söking & 8 & ~~\Large$\leadsto$~~ &  G & algoritm som letar upp element enligt sökkriterium \\ 
+  linjärsökning & 9 & ~~\Large$\leadsto$~~ &  C & sökalgoritm som letar i sekvens tills element hittas \\ 
+  registrering & 10 & ~~\Large$\leadsto$~~ &  L & algoritm som räknar element med vissa egenskaper \\ 
+  tidskomplexitet & 11 & ~~\Large$\leadsto$~~ &  J & hur exekveringstiden växer med problemstorleken \\ 
   minneskomplexitet & 12 & ~~\Large$\leadsto$~~ &  B & hur minnesåtgången växer med problemstorleken \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-concepts-taskrows-generated.tex b/compendium/generated/quiz-w06-concepts-taskrows-generated.tex
index 68c568ecd..d264e9ef3 100644
--- a/compendium/generated/quiz-w06-concepts-taskrows-generated.tex
+++ b/compendium/generated/quiz-w06-concepts-taskrows-generated.tex
@@ -1,12 +1,12 @@
-  element & 1 & & A & noll el. flera element av samma typ i viss ordning \\ 
+  element & 1 & & A & definierar hur element av en viss typ ska ordnas \\ 
   samling & 2 & & B & hur minnesåtgången växer med problemstorleken \\ 
-  samlingsbibliotek & 3 & & C & lösning på problem som drar nytta av sekvenssamling \\ 
-  sekvens(samling) & 4 & & D & algoritm som räknar element med vissa egenskaper \\ 
-  sekvensalgoritm & 5 & & E & definierar hur element av en viss typ ska ordnas \\ 
-  ordning & 6 & & F & algoritm som ordnar element i en viss ordning \\ 
-  sortering & 7 & & G & många färdiga samlingar med olika egenskaper \\ 
-  söking & 8 & & H & datastruktur med element av samma typ \\ 
-  linjärsökning & 9 & & I & objekt i en datastruktur \\ 
-  registrering & 10 & & J & algoritm som letar upp element enligt sökkriterium \\ 
-  tidskomplexitet & 11 & & K & hur exekveringstiden växer med problemstorleken \\ 
-  minneskomplexitet & 12 & & L & sökalgoritm som letar i sekvens tills element hittas \\ 
\ No newline at end of file
+  samlingsbibliotek & 3 & & C & sökalgoritm som letar i sekvens tills element hittas \\ 
+  sekvens(samling) & 4 & & D & objekt i en datastruktur \\ 
+  sekvensalgoritm & 5 & & E & algoritm som ordnar element i en viss ordning \\ 
+  ordning & 6 & & F & noll el. flera element av samma typ i viss ordning \\ 
+  sortering & 7 & & G & algoritm som letar upp element enligt sökkriterium \\ 
+  söking & 8 & & H & många färdiga samlingar med olika egenskaper \\ 
+  linjärsökning & 9 & & I & lösning på problem som drar nytta av sekvenssamling \\ 
+  registrering & 10 & & J & hur exekveringstiden växer med problemstorleken \\ 
+  tidskomplexitet & 11 & & K & datastruktur med element av samma typ \\ 
+  minneskomplexitet & 12 & & L & algoritm som räknar element med vissa egenskaper \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-collections-solurows-generated.tex b/compendium/generated/quiz-w06-seq-collections-solurows-generated.tex
index 247543bfb..6abfe43c6 100644
--- a/compendium/generated/quiz-w06-seq-collections-solurows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-collections-solurows-generated.tex
@@ -1,5 +1,5 @@
-  \code|Vector     | & 1 & ~~\Large$\leadsto$~~ &  A & oföränderlig, ger snabbt godtyckligt ändrad samling \\ 
-  \code|List       | & 2 & ~~\Large$\leadsto$~~ &  E & oföränderlig, ger snabbt ny samling ändrad i början \\ 
-  \code|Array      | & 3 & ~~\Large$\leadsto$~~ &  D & primitiv, förändringsbar, snabb indexering, fix storlek \\ 
-  \code|ArrayBuffer| & 4 & ~~\Large$\leadsto$~~ &  C & förändringsbar, snabb indexering, kan ändra storlek \\ 
+  \code|Vector     | & 1 & ~~\Large$\leadsto$~~ &  C & oföränderlig, ger snabbt godtyckligt ändrad samling \\ 
+  \code|List       | & 2 & ~~\Large$\leadsto$~~ &  D & oföränderlig, ger snabbt ny samling ändrad i början \\ 
+  \code|Array      | & 3 & ~~\Large$\leadsto$~~ &  E & primitiv, förändringsbar, snabb indexering, fix storlek \\ 
+  \code|ArrayBuffer| & 4 & ~~\Large$\leadsto$~~ &  A & förändringsbar, snabb indexering, kan ändra storlek \\ 
   \code|ListBuffer | & 5 & ~~\Large$\leadsto$~~ &  B & förändringsbar, snabb att ändra i början \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-collections-taskrows-generated.tex b/compendium/generated/quiz-w06-seq-collections-taskrows-generated.tex
index 76ea8f8ec..3b496593d 100644
--- a/compendium/generated/quiz-w06-seq-collections-taskrows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-collections-taskrows-generated.tex
@@ -1,5 +1,5 @@
-  \code|Vector     | & 1 & & A & oföränderlig, ger snabbt godtyckligt ändrad samling \\ 
+  \code|Vector     | & 1 & & A & förändringsbar, snabb indexering, kan ändra storlek \\ 
   \code|List       | & 2 & & B & förändringsbar, snabb att ändra i början \\ 
-  \code|Array      | & 3 & & C & förändringsbar, snabb indexering, kan ändra storlek \\ 
-  \code|ArrayBuffer| & 4 & & D & primitiv, förändringsbar, snabb indexering, fix storlek \\ 
-  \code|ListBuffer | & 5 & & E & oföränderlig, ger snabbt ny samling ändrad i början \\ 
\ No newline at end of file
+  \code|Array      | & 3 & & C & oföränderlig, ger snabbt godtyckligt ändrad samling \\ 
+  \code|ArrayBuffer| & 4 & & D & oföränderlig, ger snabbt ny samling ändrad i början \\ 
+  \code|ListBuffer | & 5 & & E & primitiv, förändringsbar, snabb indexering, fix storlek \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-find-solurows-generated.tex b/compendium/generated/quiz-w06-seq-find-solurows-generated.tex
index b8518aefb..701b8e7b5 100644
--- a/compendium/generated/quiz-w06-seq-find-solurows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-find-solurows-generated.tex
@@ -1,10 +1,10 @@
-  \code|xs.indexOf(0)        | & 1 & ~~\Large$\leadsto$~~ &  I & \code|5| \\ 
-  \code|xs.indexOf(6)        | & 2 & ~~\Large$\leadsto$~~ &  A & \code|-1| \\ 
-  \code|xs.indexWhere(_ < 2) | & 3 & ~~\Large$\leadsto$~~ &  F & \code|4| \\ 
-  \code|xs.indexWhere(_ != 5)| & 4 & ~~\Large$\leadsto$~~ &  C & \code|1| \\ 
-  \code|xs.find(_ == 1)      | & 5 & ~~\Large$\leadsto$~~ &  H & \code|Some(1)| \\ 
-  \code|xs.find(_ == 6)      | & 6 & ~~\Large$\leadsto$~~ &  E & \code|None| \\ 
-  \code|xs.contains(0)       | & 7 & ~~\Large$\leadsto$~~ &  B & \code|true| \\ 
-  \code|xs.filter(_ == 1)    | & 8 & ~~\Large$\leadsto$~~ &  J & \code|Vector(1, 1)| \\ 
-  \code|xs.filterNot(_ > 1)  | & 9 & ~~\Large$\leadsto$~~ &  G & \code|Vector(1, 0, 1)| \\ 
-  \code|xs.zipWithIndex.filter(_._1 == 1).map(_._2)| & 10 & ~~\Large$\leadsto$~~ &  D & \code|Vector(4, 6)| \\ 
\ No newline at end of file
+  \code|xs.indexOf(0)        | & 1 & ~~\Large$\leadsto$~~ &  D & \code|5| \\ 
+  \code|xs.indexOf(6)        | & 2 & ~~\Large$\leadsto$~~ &  G & \code|-1| \\ 
+  \code|xs.indexWhere(_ < 2) | & 3 & ~~\Large$\leadsto$~~ &  J & \code|4| \\ 
+  \code|xs.indexWhere(_ != 5)| & 4 & ~~\Large$\leadsto$~~ &  E & \code|1| \\ 
+  \code|xs.find(_ == 1)      | & 5 & ~~\Large$\leadsto$~~ &  B & \code|Some(1)| \\ 
+  \code|xs.find(_ == 6)      | & 6 & ~~\Large$\leadsto$~~ &  H & \code|None| \\ 
+  \code|xs.contains(0)       | & 7 & ~~\Large$\leadsto$~~ &  C & \code|true| \\ 
+  \code|xs.filter(_ == 1)    | & 8 & ~~\Large$\leadsto$~~ &  A & \code|Vector(1, 1)| \\ 
+  \code|xs.filterNot(_ > 1)  | & 9 & ~~\Large$\leadsto$~~ &  F & \code|Vector(1, 0, 1)| \\ 
+  \code|xs.zipWithIndex.filter(_._1 == 1).map(_._2)| & 10 & ~~\Large$\leadsto$~~ &  I & \code|Vector(4, 6)| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-find-taskrows-generated.tex b/compendium/generated/quiz-w06-seq-find-taskrows-generated.tex
index b24b3ec20..7be316675 100644
--- a/compendium/generated/quiz-w06-seq-find-taskrows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-find-taskrows-generated.tex
@@ -1,10 +1,10 @@
-  \code|xs.indexOf(0)        | & 1 & & A & \code|-1| \\ 
-  \code|xs.indexOf(6)        | & 2 & & B & \code|true| \\ 
-  \code|xs.indexWhere(_ < 2) | & 3 & & C & \code|1| \\ 
-  \code|xs.indexWhere(_ != 5)| & 4 & & D & \code|Vector(4, 6)| \\ 
-  \code|xs.find(_ == 1)      | & 5 & & E & \code|None| \\ 
-  \code|xs.find(_ == 6)      | & 6 & & F & \code|4| \\ 
-  \code|xs.contains(0)       | & 7 & & G & \code|Vector(1, 0, 1)| \\ 
-  \code|xs.filter(_ == 1)    | & 8 & & H & \code|Some(1)| \\ 
-  \code|xs.filterNot(_ > 1)  | & 9 & & I & \code|5| \\ 
-  \code|xs.zipWithIndex.filter(_._1 == 1).map(_._2)| & 10 & & J & \code|Vector(1, 1)| \\ 
\ No newline at end of file
+  \code|xs.indexOf(0)        | & 1 & & A & \code|Vector(1, 1)| \\ 
+  \code|xs.indexOf(6)        | & 2 & & B & \code|Some(1)| \\ 
+  \code|xs.indexWhere(_ < 2) | & 3 & & C & \code|true| \\ 
+  \code|xs.indexWhere(_ != 5)| & 4 & & D & \code|5| \\ 
+  \code|xs.find(_ == 1)      | & 5 & & E & \code|1| \\ 
+  \code|xs.find(_ == 6)      | & 6 & & F & \code|Vector(1, 0, 1)| \\ 
+  \code|xs.contains(0)       | & 7 & & G & \code|-1| \\ 
+  \code|xs.filter(_ == 1)    | & 8 & & H & \code|None| \\ 
+  \code|xs.filterNot(_ > 1)  | & 9 & & I & \code|Vector(4, 6)| \\ 
+  \code|xs.zipWithIndex.filter(_._1 == 1).map(_._2)| & 10 & & J & \code|4| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-methods-solurows-generated.tex b/compendium/generated/quiz-w06-seq-methods-solurows-generated.tex
index 0990cfdc7..aee33e5a1 100644
--- a/compendium/generated/quiz-w06-seq-methods-solurows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-methods-solurows-generated.tex
@@ -1,15 +1,15 @@
-  \code|x +: xs         | & 1 & ~~\Large$\leadsto$~~ &  G & \code|Vector(0, 1, 2, 3)                      | \\ 
-  \code|xs +: x         | & 2 & ~~\Large$\leadsto$~~ &  J & \code|error: value +: is not a member of Int  | \\ 
-  \code|xs :+ x         | & 3 & ~~\Large$\leadsto$~~ &  L & \code|Vector(1, 2, 3, 0)                      | \\ 
-  \code|xs ++ xs        | & 4 & ~~\Large$\leadsto$~~ &  M & \code|Vector(1, 2, 3, 1, 2, 3)                | \\ 
-  \code|xs.indices      | & 5 & ~~\Large$\leadsto$~~ &  O & \code|(0 until 3)                             | \\ 
-  \code|xs apply 0      | & 6 & ~~\Large$\leadsto$~~ &  F & \code|1                                       | \\ 
-  \code|xs(3)           | & 7 & ~~\Large$\leadsto$~~ &  B & \code|java.lang.IndexOutOfBoundsException     | \\ 
-  \code|xs.length       | & 8 & ~~\Large$\leadsto$~~ &  C & \code|3                                       | \\ 
-  \code|xs.take(4)      | & 9 & ~~\Large$\leadsto$~~ &  E & \code|Vector(1, 2, 3)                         | \\ 
-  \code|xs.drop(2)      | & 10 & ~~\Large$\leadsto$~~ &  K & \code|Vector(3)                               | \\ 
-  \code|xs.updated(0, 2)| & 11 & ~~\Large$\leadsto$~~ &  H & \code|Vector(2, 2, 3)                         | \\ 
-  \code|xs.tail.head    | & 12 & ~~\Large$\leadsto$~~ &  A & \code|2                                       | \\ 
-  \code|xs.head.tail    | & 13 & ~~\Large$\leadsto$~~ &  D & \code|error: value tail is not a member of Int| \\ 
-  \code|xs.isEmpty      | & 14 & ~~\Large$\leadsto$~~ &  I & \code|false                                   | \\ 
+  \code|x +: xs         | & 1 & ~~\Large$\leadsto$~~ &  O & \code|Vector(0, 1, 2, 3)                      | \\ 
+  \code|xs +: x         | & 2 & ~~\Large$\leadsto$~~ &  D & \code|error: value +: is not a member of Int  | \\ 
+  \code|xs :+ x         | & 3 & ~~\Large$\leadsto$~~ &  A & \code|Vector(1, 2, 3, 0)                      | \\ 
+  \code|xs ++ xs        | & 4 & ~~\Large$\leadsto$~~ &  H & \code|Vector(1, 2, 3, 1, 2, 3)                | \\ 
+  \code|xs.indices      | & 5 & ~~\Large$\leadsto$~~ &  C & \code|(0 until 3)                             | \\ 
+  \code|xs apply 0      | & 6 & ~~\Large$\leadsto$~~ &  L & \code|1                                       | \\ 
+  \code|xs(3)           | & 7 & ~~\Large$\leadsto$~~ &  K & \code|java.lang.IndexOutOfBoundsException     | \\ 
+  \code|xs.length       | & 8 & ~~\Large$\leadsto$~~ &  I & \code|3                                       | \\ 
+  \code|xs.take(4)      | & 9 & ~~\Large$\leadsto$~~ &  M & \code|Vector(1, 2, 3)                         | \\ 
+  \code|xs.drop(2)      | & 10 & ~~\Large$\leadsto$~~ &  F & \code|Vector(3)                               | \\ 
+  \code|xs.updated(0, 2)| & 11 & ~~\Large$\leadsto$~~ &  B & \code|Vector(2, 2, 3)                         | \\ 
+  \code|xs.tail.head    | & 12 & ~~\Large$\leadsto$~~ &  E & \code|2                                       | \\ 
+  \code|xs.head.tail    | & 13 & ~~\Large$\leadsto$~~ &  J & \code|error: value tail is not a member of Int| \\ 
+  \code|xs.isEmpty      | & 14 & ~~\Large$\leadsto$~~ &  G & \code|false                                   | \\ 
   \code|xs.nonEmpty     | & 15 & ~~\Large$\leadsto$~~ &  N & \code|true                                    | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-methods-taskrows-generated.tex b/compendium/generated/quiz-w06-seq-methods-taskrows-generated.tex
index dda3ab191..424890816 100644
--- a/compendium/generated/quiz-w06-seq-methods-taskrows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-methods-taskrows-generated.tex
@@ -1,15 +1,15 @@
-  \code|x +: xs         | & 1 & & A & \code|2                                       | \\ 
-  \code|xs +: x         | & 2 & & B & \code|java.lang.IndexOutOfBoundsException     | \\ 
-  \code|xs :+ x         | & 3 & & C & \code|3                                       | \\ 
-  \code|xs ++ xs        | & 4 & & D & \code|error: value tail is not a member of Int| \\ 
-  \code|xs.indices      | & 5 & & E & \code|Vector(1, 2, 3)                         | \\ 
-  \code|xs apply 0      | & 6 & & F & \code|1                                       | \\ 
-  \code|xs(3)           | & 7 & & G & \code|Vector(0, 1, 2, 3)                      | \\ 
-  \code|xs.length       | & 8 & & H & \code|Vector(2, 2, 3)                         | \\ 
-  \code|xs.take(4)      | & 9 & & I & \code|false                                   | \\ 
-  \code|xs.drop(2)      | & 10 & & J & \code|error: value +: is not a member of Int  | \\ 
-  \code|xs.updated(0, 2)| & 11 & & K & \code|Vector(3)                               | \\ 
-  \code|xs.tail.head    | & 12 & & L & \code|Vector(1, 2, 3, 0)                      | \\ 
-  \code|xs.head.tail    | & 13 & & M & \code|Vector(1, 2, 3, 1, 2, 3)                | \\ 
+  \code|x +: xs         | & 1 & & A & \code|Vector(1, 2, 3, 0)                      | \\ 
+  \code|xs +: x         | & 2 & & B & \code|Vector(2, 2, 3)                         | \\ 
+  \code|xs :+ x         | & 3 & & C & \code|(0 until 3)                             | \\ 
+  \code|xs ++ xs        | & 4 & & D & \code|error: value +: is not a member of Int  | \\ 
+  \code|xs.indices      | & 5 & & E & \code|2                                       | \\ 
+  \code|xs apply 0      | & 6 & & F & \code|Vector(3)                               | \\ 
+  \code|xs(3)           | & 7 & & G & \code|false                                   | \\ 
+  \code|xs.length       | & 8 & & H & \code|Vector(1, 2, 3, 1, 2, 3)                | \\ 
+  \code|xs.take(4)      | & 9 & & I & \code|3                                       | \\ 
+  \code|xs.drop(2)      | & 10 & & J & \code|error: value tail is not a member of Int| \\ 
+  \code|xs.updated(0, 2)| & 11 & & K & \code|java.lang.IndexOutOfBoundsException     | \\ 
+  \code|xs.tail.head    | & 12 & & L & \code|1                                       | \\ 
+  \code|xs.head.tail    | & 13 & & M & \code|Vector(1, 2, 3)                         | \\ 
   \code|xs.isEmpty      | & 14 & & N & \code|true                                    | \\ 
-  \code|xs.nonEmpty     | & 15 & & O & \code|(0 until 3)                             | \\ 
\ No newline at end of file
+  \code|xs.nonEmpty     | & 15 & & O & \code|Vector(0, 1, 2, 3)                      | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-sort-solurows-generated.tex b/compendium/generated/quiz-w06-seq-sort-solurows-generated.tex
index a1496d908..0533069a3 100644
--- a/compendium/generated/quiz-w06-seq-sort-solurows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-sort-solurows-generated.tex
@@ -1,9 +1,9 @@
-  \code|'a' < 'A'                  | & 1 & ~~\Large$\leadsto$~~ &  B & \code|false| \\ 
-  \code|"AÄÖö" < "AÅÖö"        | & 2 & ~~\Large$\leadsto$~~ &  G & \code|true| \\ 
-  \code|xs.sorted.head             | & 3 & ~~\Large$\leadsto$~~ &  H & \code|-1| \\ 
-  \code|xs.sorted.reverse.head     | & 4 & ~~\Large$\leadsto$~~ &  F & \code|3| \\ 
-  \code|ys.sorted.head             | & 5 & ~~\Large$\leadsto$~~ &  I & \code|"ak"| \\ 
-  \code|zs.indexOf('a')            | & 6 & ~~\Large$\leadsto$~~ &  D & \code|1| \\ 
-  \code|ps.sorted.head.förnamn.take(2)| & 7 & ~~\Large$\leadsto$~~ &  A & \code|error: ...| \\ 
-  \code|ps.sortBy(_.förnamn).apply(1).förnamn.take(2)| & 8 & ~~\Large$\leadsto$~~ &  E & \code|"ka"| \\ 
-  \code|xs.sortWith((x1,x2) => x1 > x2).indexOf(3)| & 9 & ~~\Large$\leadsto$~~ &  C & \code|0| \\ 
\ No newline at end of file
+  \code|'a' < 'A'                  | & 1 & ~~\Large$\leadsto$~~ &  C & \code|false| \\ 
+  \code|"AÄÖö" < "AÅÖö"        | & 2 & ~~\Large$\leadsto$~~ &  A & \code|true| \\ 
+  \code|xs.sorted.head             | & 3 & ~~\Large$\leadsto$~~ &  I & \code|-1| \\ 
+  \code|xs.sorted.reverse.head     | & 4 & ~~\Large$\leadsto$~~ &  E & \code|3| \\ 
+  \code|ys.sorted.head             | & 5 & ~~\Large$\leadsto$~~ &  G & \code|"ak"| \\ 
+  \code|zs.indexOf('a')            | & 6 & ~~\Large$\leadsto$~~ &  B & \code|1| \\ 
+  \code|ps.sorted.head.förnamn.take(2)| & 7 & ~~\Large$\leadsto$~~ &  H & \code|error: ...| \\ 
+  \code|ps.sortBy(_.förnamn).apply(1).förnamn.take(2)| & 8 & ~~\Large$\leadsto$~~ &  F & \code|"ka"| \\ 
+  \code|xs.sortWith((x1,x2) => x1 > x2).indexOf(3)| & 9 & ~~\Large$\leadsto$~~ &  D & \code|0| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-sort-taskrows-generated.tex b/compendium/generated/quiz-w06-seq-sort-taskrows-generated.tex
index acf249aa5..a7d4a5261 100644
--- a/compendium/generated/quiz-w06-seq-sort-taskrows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-sort-taskrows-generated.tex
@@ -1,9 +1,9 @@
-  \code|'a' < 'A'                  | & 1 & & A & \code|error: ...| \\ 
-  \code|"AÄÖö" < "AÅÖö"        | & 2 & & B & \code|false| \\ 
-  \code|xs.sorted.head             | & 3 & & C & \code|0| \\ 
-  \code|xs.sorted.reverse.head     | & 4 & & D & \code|1| \\ 
-  \code|ys.sorted.head             | & 5 & & E & \code|"ka"| \\ 
-  \code|zs.indexOf('a')            | & 6 & & F & \code|3| \\ 
-  \code|ps.sorted.head.förnamn.take(2)| & 7 & & G & \code|true| \\ 
-  \code|ps.sortBy(_.förnamn).apply(1).förnamn.take(2)| & 8 & & H & \code|-1| \\ 
-  \code|xs.sortWith((x1,x2) => x1 > x2).indexOf(3)| & 9 & & I & \code|"ak"| \\ 
\ No newline at end of file
+  \code|'a' < 'A'                  | & 1 & & A & \code|true| \\ 
+  \code|"AÄÖö" < "AÅÖö"        | & 2 & & B & \code|1| \\ 
+  \code|xs.sorted.head             | & 3 & & C & \code|false| \\ 
+  \code|xs.sorted.reverse.head     | & 4 & & D & \code|0| \\ 
+  \code|ys.sorted.head             | & 5 & & E & \code|3| \\ 
+  \code|zs.indexOf('a')            | & 6 & & F & \code|"ka"| \\ 
+  \code|ps.sorted.head.förnamn.take(2)| & 7 & & G & \code|"ak"| \\ 
+  \code|ps.sortBy(_.förnamn).apply(1).förnamn.take(2)| & 8 & & H & \code|error: ...| \\ 
+  \code|xs.sortWith((x1,x2) => x1 > x2).indexOf(3)| & 9 & & I & \code|-1| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-update-solurows-generated.tex b/compendium/generated/quiz-w06-seq-update-solurows-generated.tex
index c524cd904..2c0f3a423 100644
--- a/compendium/generated/quiz-w06-seq-update-solurows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-update-solurows-generated.tex
@@ -1,8 +1,8 @@
-  \code|{ buf(0) = -1; buf(0) }   | & 1 & ~~\Large$\leadsto$~~ &  A & \code|-1| \\ 
-  \code|{ xs(0) = -1; xs(0) }| & 2 & ~~\Large$\leadsto$~~ &  C & {\small\code|error: value update is not a member|} \\ 
-  \code|buf.update(1, 5)          | & 3 & ~~\Large$\leadsto$~~ &  D & \code|(): Unit| \\ 
-  \code|xs.updated(0, 5)          | & 4 & ~~\Large$\leadsto$~~ &  E & \code|Vector(5, 2, 3, 4)| \\ 
-  \code|{ buf += 5; buf }         | & 5 & ~~\Large$\leadsto$~~ &  G & \code|ArrayBuffer(1, 5, 3, 4, 5)| \\ 
-  \code|{ xs += 5; xs }         | & 6 & ~~\Large$\leadsto$~~ &  H & {\small\code|error: value += is not a member|} \\ 
-  \code|xs.patch(1,Vector(-1,5),3)| & 7 & ~~\Large$\leadsto$~~ &  F & \code|Vector(1, -1, 5)| \\ 
+  \code|{ buf(0) = -1; buf(0) }   | & 1 & ~~\Large$\leadsto$~~ &  H & \code|-1| \\ 
+  \code|{ xs(0) = -1; xs(0) }| & 2 & ~~\Large$\leadsto$~~ &  E & {\small\code|error: value update is not a member|} \\ 
+  \code|buf.update(1, 5)          | & 3 & ~~\Large$\leadsto$~~ &  A & \code|(): Unit| \\ 
+  \code|xs.updated(0, 5)          | & 4 & ~~\Large$\leadsto$~~ &  F & \code|Vector(5, 2, 3, 4)| \\ 
+  \code|{ buf += 5; buf }         | & 5 & ~~\Large$\leadsto$~~ &  C & \code|ArrayBuffer(1, 5, 3, 4, 5)| \\ 
+  \code|{ xs += 5; xs }         | & 6 & ~~\Large$\leadsto$~~ &  G & {\small\code|error: value += is not a member|} \\ 
+  \code|xs.patch(1,Vector(-1,5),3)| & 7 & ~~\Large$\leadsto$~~ &  D & \code|Vector(1, -1, 5)| \\ 
   \code|xs                        | & 8 & ~~\Large$\leadsto$~~ &  B & \code|Vector(1, 2, 3, 4)| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w06-seq-update-taskrows-generated.tex b/compendium/generated/quiz-w06-seq-update-taskrows-generated.tex
index f0ba6230f..385fa8bfa 100644
--- a/compendium/generated/quiz-w06-seq-update-taskrows-generated.tex
+++ b/compendium/generated/quiz-w06-seq-update-taskrows-generated.tex
@@ -1,8 +1,8 @@
-  \code|{ buf(0) = -1; buf(0) }   | & 1 & & A & \code|-1| \\ 
+  \code|{ buf(0) = -1; buf(0) }   | & 1 & & A & \code|(): Unit| \\ 
   \code|{ xs(0) = -1; xs(0) }| & 2 & & B & \code|Vector(1, 2, 3, 4)| \\ 
-  \code|buf.update(1, 5)          | & 3 & & C & {\small\code|error: value update is not a member|} \\ 
-  \code|xs.updated(0, 5)          | & 4 & & D & \code|(): Unit| \\ 
-  \code|{ buf += 5; buf }         | & 5 & & E & \code|Vector(5, 2, 3, 4)| \\ 
-  \code|{ xs += 5; xs }         | & 6 & & F & \code|Vector(1, -1, 5)| \\ 
-  \code|xs.patch(1,Vector(-1,5),3)| & 7 & & G & \code|ArrayBuffer(1, 5, 3, 4, 5)| \\ 
-  \code|xs                        | & 8 & & H & {\small\code|error: value += is not a member|} \\ 
\ No newline at end of file
+  \code|buf.update(1, 5)          | & 3 & & C & \code|ArrayBuffer(1, 5, 3, 4, 5)| \\ 
+  \code|xs.updated(0, 5)          | & 4 & & D & \code|Vector(1, -1, 5)| \\ 
+  \code|{ buf += 5; buf }         | & 5 & & E & {\small\code|error: value update is not a member|} \\ 
+  \code|{ xs += 5; xs }         | & 6 & & F & \code|Vector(5, 2, 3, 4)| \\ 
+  \code|xs.patch(1,Vector(-1,5),3)| & 7 & & G & {\small\code|error: value += is not a member|} \\ 
+  \code|xs                        | & 8 & & H & \code|-1| \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w07-concepts-solurows-generated.tex b/compendium/generated/quiz-w07-concepts-solurows-generated.tex
index 06b9b6475..ec2b5d8e0 100644
--- a/compendium/generated/quiz-w07-concepts-solurows-generated.tex
+++ b/compendium/generated/quiz-w07-concepts-solurows-generated.tex
@@ -1,8 +1,8 @@
-  mängd & 1 & ~~\Large$\leadsto$~~ &  A & oordnad samling med unika element \\ 
+  mängd & 1 & ~~\Large$\leadsto$~~ &  H & oordnad samling med unika element \\ 
   nyckel-värde-tabell & 2 & ~~\Large$\leadsto$~~ &  E & oordnad samling av mappningar med unika nycklar \\ 
-  mappning & 3 & ~~\Large$\leadsto$~~ &  C & \code{nyckel -> värde} \\ 
+  mappning & 3 & ~~\Large$\leadsto$~~ &  A & \code|nyckel -> värde| \\ 
   nyckel & 4 & ~~\Large$\leadsto$~~ &  G & en unik identifierare \\ 
   persistens & 5 & ~~\Large$\leadsto$~~ &  B & egenskapen att finnas kvar efter programmets avslut \\ 
-  serialisera & 6 & ~~\Large$\leadsto$~~ &  H & koda objekt till avkodningsbar sekvens av symboler \\ 
-  de-serialisera & 7 & ~~\Large$\leadsto$~~ &  D & avkoda symbolsekvens och återskapa objekt i minnet \\ 
-  linjärsöka & 8 & ~~\Large$\leadsto$~~ &  F & leta i sekvens tills sökkriteriet är uppfyllt \\ 
\ No newline at end of file
+  serialisera & 6 & ~~\Large$\leadsto$~~ &  D & koda objekt till avkodningsbar sekvens av symboler \\ 
+  de-serialisera & 7 & ~~\Large$\leadsto$~~ &  F & avkoda symbolsekvens och återskapa objekt i minnet \\ 
+  linjärsöka & 8 & ~~\Large$\leadsto$~~ &  C & leta i sekvens tills sökkriteriet är uppfyllt \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w07-concepts-taskrows-generated.tex b/compendium/generated/quiz-w07-concepts-taskrows-generated.tex
index 61ddd3c4b..951ab9bc6 100644
--- a/compendium/generated/quiz-w07-concepts-taskrows-generated.tex
+++ b/compendium/generated/quiz-w07-concepts-taskrows-generated.tex
@@ -1,8 +1,8 @@
-  mängd & 1 & & A & oordnad samling med unika element \\ 
+  mängd & 1 & & A & \code|nyckel -> värde| \\ 
   nyckel-värde-tabell & 2 & & B & egenskapen att finnas kvar efter programmets avslut \\ 
-  mappning & 3 & & C & \code{nyckel -> värde} \\ 
-  nyckel & 4 & & D & avkoda symbolsekvens och återskapa objekt i minnet \\ 
+  mappning & 3 & & C & leta i sekvens tills sökkriteriet är uppfyllt \\ 
+  nyckel & 4 & & D & koda objekt till avkodningsbar sekvens av symboler \\ 
   persistens & 5 & & E & oordnad samling av mappningar med unika nycklar \\ 
-  serialisera & 6 & & F & leta i sekvens tills sökkriteriet är uppfyllt \\ 
+  serialisera & 6 & & F & avkoda symbolsekvens och återskapa objekt i minnet \\ 
   de-serialisera & 7 & & G & en unik identifierare \\ 
-  linjärsöka & 8 & & H & koda objekt till avkodningsbar sekvens av symboler \\ 
\ No newline at end of file
+  linjärsöka & 8 & & H & oordnad samling med unika element \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w07-mapops-solurows-generated.tex b/compendium/generated/quiz-w07-mapops-solurows-generated.tex
index 0c7ae7527..9e61e9006 100644
--- a/compendium/generated/quiz-w07-mapops-solurows-generated.tex
+++ b/compendium/generated/quiz-w07-mapops-solurows-generated.tex
@@ -1,10 +1,10 @@
   \code|xs(2) + xs(4)                 | & 1 & ~~\Large$\leadsto$~~ &  G & \code|8                     | \\ 
-  \code|ys(2) + ys(4)                 | & 2 & ~~\Large$\leadsto$~~ &  E & \verb|error: type mismatch  | \\ 
-  \code|ys(0)                         | & 3 & ~~\Large$\leadsto$~~ &  D & \code|(10, 11)              | \\ 
-  \code|xs(0)                         | & 4 & ~~\Large$\leadsto$~~ &  A & \code|NoSuchElementException| \\ 
-  \code|(xs + (0 -> 1)).apply(0)      | & 5 & ~~\Large$\leadsto$~~ &  F & \code|1                     | \\ 
+  \code|ys(2) + ys(4)                 | & 2 & ~~\Large$\leadsto$~~ &  A & \verb|error: type mismatch  | \\ 
+  \code|ys(0)                         | & 3 & ~~\Large$\leadsto$~~ &  B & \code|(10, 11)              | \\ 
+  \code|xs(0)                         | & 4 & ~~\Large$\leadsto$~~ &  I & \code|NoSuchElementException| \\ 
+  \code|(xs + (0 -> 1)).apply(0)      | & 5 & ~~\Large$\leadsto$~~ &  D & \code|1                     | \\ 
   \code|xs.keySet.apply(2)            | & 6 & ~~\Large$\leadsto$~~ &  C & \code|true                  | \\ 
-  \code|xs.mapValues(v => -v).apply(8)| & 7 & ~~\Large$\leadsto$~~ &  I & \code|-9                    | \\ 
-  \code|xs isDefinedAt 0              | & 8 & ~~\Large$\leadsto$~~ &  H & \code|false                 | \\ 
-  \code|xs.getOrElse(0, 7)            | & 9 & ~~\Large$\leadsto$~~ &  J & \code|7                     | \\ 
-  \code|xs.maxBy(_._2)                | & 10 & ~~\Large$\leadsto$~~ &  B & \code|(16, 17)              | \\ 
\ No newline at end of file
+  \code|xs.mapValues(v => -v).apply(8)| & 7 & ~~\Large$\leadsto$~~ &  F & \code|-9                    | \\ 
+  \code|xs isDefinedAt 0              | & 8 & ~~\Large$\leadsto$~~ &  E & \code|false                 | \\ 
+  \code|xs.getOrElse(0, 7)            | & 9 & ~~\Large$\leadsto$~~ &  H & \code|7                     | \\ 
+  \code|xs.maxBy(_._2)                | & 10 & ~~\Large$\leadsto$~~ &  J & \code|(16, 17)              | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w07-mapops-taskrows-generated.tex b/compendium/generated/quiz-w07-mapops-taskrows-generated.tex
index 291444af0..268275a33 100644
--- a/compendium/generated/quiz-w07-mapops-taskrows-generated.tex
+++ b/compendium/generated/quiz-w07-mapops-taskrows-generated.tex
@@ -1,10 +1,10 @@
-  \code|xs(2) + xs(4)                 | & 1 & & A & \code|NoSuchElementException| \\ 
-  \code|ys(2) + ys(4)                 | & 2 & & B & \code|(16, 17)              | \\ 
+  \code|xs(2) + xs(4)                 | & 1 & & A & \verb|error: type mismatch  | \\ 
+  \code|ys(2) + ys(4)                 | & 2 & & B & \code|(10, 11)              | \\ 
   \code|ys(0)                         | & 3 & & C & \code|true                  | \\ 
-  \code|xs(0)                         | & 4 & & D & \code|(10, 11)              | \\ 
-  \code|(xs + (0 -> 1)).apply(0)      | & 5 & & E & \verb|error: type mismatch  | \\ 
-  \code|xs.keySet.apply(2)            | & 6 & & F & \code|1                     | \\ 
+  \code|xs(0)                         | & 4 & & D & \code|1                     | \\ 
+  \code|(xs + (0 -> 1)).apply(0)      | & 5 & & E & \code|false                 | \\ 
+  \code|xs.keySet.apply(2)            | & 6 & & F & \code|-9                    | \\ 
   \code|xs.mapValues(v => -v).apply(8)| & 7 & & G & \code|8                     | \\ 
-  \code|xs isDefinedAt 0              | & 8 & & H & \code|false                 | \\ 
-  \code|xs.getOrElse(0, 7)            | & 9 & & I & \code|-9                    | \\ 
-  \code|xs.maxBy(_._2)                | & 10 & & J & \code|7                     | \\ 
\ No newline at end of file
+  \code|xs isDefinedAt 0              | & 8 & & H & \code|7                     | \\ 
+  \code|xs.getOrElse(0, 7)            | & 9 & & I & \code|NoSuchElementException| \\ 
+  \code|xs.maxBy(_._2)                | & 10 & & J & \code|(16, 17)              | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w07-setops-solurows-generated.tex b/compendium/generated/quiz-w07-setops-solurows-generated.tex
index 4b12bca81..235556bbb 100644
--- a/compendium/generated/quiz-w07-setops-solurows-generated.tex
+++ b/compendium/generated/quiz-w07-setops-solurows-generated.tex
@@ -1,9 +1,9 @@
-  \code|Set(1, 2) ++ Set(1, 2)          | & 1 & ~~\Large$\leadsto$~~ &  A & \code|Set(1, 2)     | \\ 
-  \code|(1 to 3).toSet                  | & 2 & ~~\Large$\leadsto$~~ &  D & \code|Set(1) + 2 + 3| \\ 
-  \code|Vector.fill(3)(1).toSet         | & 3 & ~~\Large$\leadsto$~~ &  B & \code|Set(1, 2) - 2 | \\ 
-  \code|Set(1, 2, 3) diff Set(1, 2)     | & 4 & ~~\Large$\leadsto$~~ &  E & \code|Set(3)        | \\ 
-  \code|(1 to 7).toSet.apply(8)         | & 5 & ~~\Large$\leadsto$~~ &  I & \code|false         | \\ 
-  \code|Set(1, 2, 3).sorted             | & 6 & ~~\Large$\leadsto$~~ &  F & \code|error: ...    | \\ 
-  \code|Set(2,4) subsetOf (1 to 7).toSet| & 7 & ~~\Large$\leadsto$~~ &  H & \code|true          | \\ 
+  \code|Set(1, 2) ++ Set(1, 2)          | & 1 & ~~\Large$\leadsto$~~ &  I & \code|Set(1, 2)     | \\ 
+  \code|(1 to 3).toSet                  | & 2 & ~~\Large$\leadsto$~~ &  G & \code|Set(1) + 2 + 3| \\ 
+  \code|Vector.fill(3)(1).toSet         | & 3 & ~~\Large$\leadsto$~~ &  A & \code|Set(1, 2) - 2 | \\ 
+  \code|Set(1, 2, 3) diff Set(1, 2)     | & 4 & ~~\Large$\leadsto$~~ &  H & \code|Set(3)        | \\ 
+  \code|(1 to 7).toSet.apply(8)         | & 5 & ~~\Large$\leadsto$~~ &  B & \code|false         | \\ 
+  \code|Set(1, 2, 3).sorted             | & 6 & ~~\Large$\leadsto$~~ &  D & \code|error: ...    | \\ 
+  \code|Set(2,4) subsetOf (1 to 7).toSet| & 7 & ~~\Large$\leadsto$~~ &  E & \code|true          | \\ 
   \code|Set(1, -1, 2, -2).map(_.abs).sum| & 8 & ~~\Large$\leadsto$~~ &  C & \code|3             | \\ 
-  \code|Set(1, 1, 1, 1, 1, 5).sum       | & 9 & ~~\Large$\leadsto$~~ &  G & \code|6             | \\ 
\ No newline at end of file
+  \code|Set(1, 1, 1, 1, 1, 5).sum       | & 9 & ~~\Large$\leadsto$~~ &  F & \code|6             | \\ 
\ No newline at end of file
diff --git a/compendium/generated/quiz-w07-setops-taskrows-generated.tex b/compendium/generated/quiz-w07-setops-taskrows-generated.tex
index f9c2d8626..3e09b897d 100644
--- a/compendium/generated/quiz-w07-setops-taskrows-generated.tex
+++ b/compendium/generated/quiz-w07-setops-taskrows-generated.tex
@@ -1,9 +1,9 @@
-  \code|Set(1, 2) ++ Set(1, 2)          | & 1 & & A & \code|Set(1, 2)     | \\ 
-  \code|(1 to 3).toSet                  | & 2 & & B & \code|Set(1, 2) - 2 | \\ 
+  \code|Set(1, 2) ++ Set(1, 2)          | & 1 & & A & \code|Set(1, 2) - 2 | \\ 
+  \code|(1 to 3).toSet                  | & 2 & & B & \code|false         | \\ 
   \code|Vector.fill(3)(1).toSet         | & 3 & & C & \code|3             | \\ 
-  \code|Set(1, 2, 3) diff Set(1, 2)     | & 4 & & D & \code|Set(1) + 2 + 3| \\ 
-  \code|(1 to 7).toSet.apply(8)         | & 5 & & E & \code|Set(3)        | \\ 
-  \code|Set(1, 2, 3).sorted             | & 6 & & F & \code|error: ...    | \\ 
-  \code|Set(2,4) subsetOf (1 to 7).toSet| & 7 & & G & \code|6             | \\ 
-  \code|Set(1, -1, 2, -2).map(_.abs).sum| & 8 & & H & \code|true          | \\ 
-  \code|Set(1, 1, 1, 1, 1, 5).sum       | & 9 & & I & \code|false         | \\ 
\ No newline at end of file
+  \code|Set(1, 2, 3) diff Set(1, 2)     | & 4 & & D & \code|error: ...    | \\ 
+  \code|(1 to 7).toSet.apply(8)         | & 5 & & E & \code|true          | \\ 
+  \code|Set(1, 2, 3).sorted             | & 6 & & F & \code|6             | \\ 
+  \code|Set(2,4) subsetOf (1 to 7).toSet| & 7 & & G & \code|Set(1) + 2 + 3| \\ 
+  \code|Set(1, -1, 2, -2).map(_.abs).sum| & 8 & & H & \code|Set(3)        | \\ 
+  \code|Set(1, 1, 1, 1, 1, 5).sum       | & 9 & & I & \code|Set(1, 2)     | \\ 
\ No newline at end of file
diff --git a/compendium/postchapters/build.tex b/compendium/postchapters/build.tex
index 48bb3e446..d9d2c3b7d 100644
--- a/compendium/postchapters/build.tex
+++ b/compendium/postchapters/build.tex
@@ -7,35 +7,35 @@ \chapter{Byggverktyg}\label{appendix:build}
 
 \section{Vad gör ett byggverktyg?}
 
-Ett \textbf{byggverktyg} \Eng{build tool} används för att 
+Ett \textbf{byggverktyg} \Eng{build tool} används för att
 \begin{itemize}
-\item ladda ner, 
-\item kompilera, 
-\item testköra, 
-\item paketera och 
-\item distribuera  
+\item ladda ner,
+\item kompilera,
+\item testköra,
+\item paketera och
+\item distribuera
 \end{itemize}
 programvara. Ett stort utvecklingsprojekt kan innehålla många hundra kodfiler och under utvecklingens gång vill man kontinuerligt testköra systemet för att kontrollera att allt fortfarande fungerar; även den kod som inte ändrats, men som kanske ändå påverkas av ändringen. Ett byggverktyg används för att \textit{automatisera} denna process.
 
-Ett viktigt begrepp i byggsammanhang är \textbf{beroende} \Eng{dependency}. Om koden X behöver annan kod Y för att fungera, sägs kod X ha ett beroende till kod Y. 
+Ett viktigt begrepp i byggsammanhang är \textbf{beroende} \Eng{dependency}. Om koden X behöver annan kod Y för att fungera, sägs kod X ha ett beroende till kod Y.
 
 I konfigurationsfiler, som är skrivna i ett format som byggverktyget kan läsa, specificeras de beroenden som finns mellan olika koddelar. Byggverktyget analyserar dessa beroenden och, baserat på ändringstidsmarkeringar för kodfilerna, avgör byggverktyget vilken delmängd av kodfilerna som behöver \textbf{omkompileras} efter en ändring. Detta snabbar upp kompileringen avsevärt jämfört med en total omkompilering från grunden, som för ett stort projekt kan ta många minuter eller till och med timmar. Efter omkompilering av det som ändrats, kan byggverktyget instrueras att köra igenom testprogram och rapportera om testernas utfall, men även ladda upp körbara programpaket till t.ex. en webbserver.
 
 
-En vanlig typ av beroende är färdiga programbibliotek som utnyttjas av systemet under utveckling, vilket i praktiken ofta innebär att en sökväg till den kompilerade koden för programbiblioteket behöver göras tillgänglig. I JVM-sammanhang innebär detta att sökvägen till alla nödvändiga jar-filer behöver finnas på sökvägslistan kallad \textbf{classpath}. 
+En vanlig typ av beroende är färdiga programbibliotek som utnyttjas av systemet under utveckling, vilket i praktiken ofta innebär att en sökväg till den kompilerade koden för programbiblioteket behöver göras tillgänglig. I JVM-sammanhang innebär detta att sökvägen till alla nödvändiga jar-filer behöver finnas på sökvägslistan kallad \textbf{classpath}.
 
-Många byggverktyg kan utföra så kallad \textbf{beroendeupplösning} \Eng{dependency resolution}, vilket innebär att nätverket av beroenden analyseras och rätt uppsättning programpaket görs tillgänglig under bygget. Detta kan även innebära att programpaket som är tillgängliga via nätet automatiskt laddas ned inför bygget, t.ex. via lagringsplatser för öppen källkod.   
+Många byggverktyg kan utföra så kallad \textbf{beroendeupplösning} \Eng{dependency resolution}, vilket innebär att nätverket av beroenden analyseras och rätt uppsättning programpaket görs tillgänglig under bygget. Detta kan även innebära att programpaket som är tillgängliga via nätet automatiskt laddas ned inför bygget, t.ex. via lagringsplatser för öppen källkod.
 
 Även om man bara har ett litet kodprojekt med några få kodfiler, är det ändå smidigt att använda ett byggverktyg. Man kan nämligen göra så att byggverktyget är aktivt i bakgrunden och, så fort man sparar en ändring av koden, gör omkompilering och rapporterar eventuella kompileringsfel.
 
-Det är klokt att kompilera om ofta, helst vid varje liten ändring, och rätta eventuella fel \textit{innan} nya ändringar görs, eftersom det är mycket lättare att klura ut ett enskilt problem efter en mindre ändring, än att åtgärda en massa svåra följdfel, som beror på en sekvens av omfattande ändringar, där misstaget begicks någon gång långt tidigare. 
+Det är klokt att kompilera om ofta, helst vid varje liten ändring, och rätta eventuella fel \textit{innan} nya ändringar görs, eftersom det är mycket lättare att klura ut ett enskilt problem efter en mindre ändring, än att åtgärda en massa svåra följdfel, som beror på en sekvens av omfattande ändringar, där misstaget begicks någon gång långt tidigare.
 
 En integrerad utvecklingsmiljö, så som Eclipse eller IntelliJ IDEA, bygger om koden kontinuerligt och kan ofta kommunicera med flera olika typer av byggverktyg för att i samklang med dessa automatisera byggprocessen.
 
 Det finns många olika byggverktyg. Några allmänt kända byggverktyg med öppen källkod listas nedan, tillsammans med namnen på deras konfigurationsfiler så att du ska känna igen vilket byggverktyg som används i  kodprojekt som du stöter på, t.ex. på GitHub.
 
 \begin{itemize}
-\item \sbt. Även kallad \textit{Scala Build Tool}. Används för att bygga Java- och Scala-program i samexistens, men även för att automatisera en mängd andra saker. Byggverktyget är utvecklat i Scala och konfigurationsfilerna, som heter \texttt{build.sbt}, innehåller Scala-kod som styr byggprocessen. 
+\item \sbt. Även kallad \textit{Scala Build Tool}. Används för att bygga Java- och Scala-program i samexistens, men även för att automatisera en mängd andra saker. Byggverktyget är utvecklat i Scala och konfigurationsfilerna, som heter \texttt{build.sbt}, innehåller Scala-kod som styr byggprocessen.
 
 \item \texttt{make}. Detta anrika byggverktyg har varit med ända sedan 1970-talet och används fortfarande för att bygga många system under Linux, och är populärt vid utveckling med programspråken C och C++. En konfigurationsfil för \texttt{make} heter \texttt{Makefile} och har en egen, speciell syntax.
 
@@ -43,13 +43,13 @@ \section{Vad gör ett byggverktyg?}
 
 \item Apache Maven, \texttt{mvn} är också skriven i Java och är en efterföljare till \texttt{ant}. Maven används av många Java-utvecklare. Konfigurationsfilerna heter \texttt{pom.xml} och innehåller en s.k. projektobjektmodell specificerad i XML enligt  speciella regler.
 
-\item \texttt{gradle} bygger vidare på idéerna från \texttt{ant} och \texttt{maven} och är skrivet i Java och Groovy.  Konfigurationsfilerna skrivs i Groovy och heter \texttt{build.gradle}.  
+\item \texttt{gradle} bygger vidare på idéerna från \texttt{ant} och \texttt{maven} och är skrivet i Java och Groovy.  Konfigurationsfilerna skrivs i Groovy och heter \texttt{build.gradle}.
 
-\end{itemize} 
+\end{itemize}
 
 \section{Byggverktyget sbt}
 
-Byggverktyget \sbt\ är skrivet i Scala och är det mest populära byggverktyget bland Scala-utvecklare. Med \sbt\ kan du skriva byggkonfigurationsfiler i Scala och även styra byggprocessen via ett interaktivt kommandoskal i terminalfönstret. Med inkrementell (stegvis) kompilering och parallellkörning av byggprocessens olika delar, kan den snabbas upp avsevärt.    
+Byggverktyget \sbt\ är skrivet i Scala och är det mest populära byggverktyget bland Scala-utvecklare. Med \sbt\ kan du skriva byggkonfigurationsfiler i Scala och även styra byggprocessen via ett interaktivt kommandoskal i terminalfönstret. Med inkrementell (stegvis) kompilering och parallellkörning av byggprocessens olika delar, kan den snabbas upp avsevärt.
 
 
 \subsection{Installera sbt}
@@ -57,12 +57,12 @@ \subsection{Installera sbt}
 \sbt\ finns förinstallerat på LTH:s datorer och körs igång med kommandot \sbt\ i terminalen.
 
 Om du vill installera \sbt\ på din egen dator,
-säkerställ först att du har \code{java} på din dator med terminalkommandot \code{java -version}. Om \code{java} saknas, följ instruktionerna i avsnitt \ref{appendix:compile:install-jdk} på sidan \pageref{appendix:compile:install-jdk}. 
-Följ sedan instruktionerna här för att installera \sbt: \url{http://www.scala-sbt.org/download.html} 
+säkerställ först att du har \code{java} på din dator med terminalkommandot \code{java -version}. Om \code{java} saknas, följ instruktionerna i avsnitt \ref{appendix:compile:install-jdk} på sidan \pageref{appendix:compile:install-jdk}.
+Följ sedan instruktionerna här för att installera \sbt: \url{http://www.scala-sbt.org/download.html}
 
 \begin{itemize}
 
-\item \textbf{Linux}. Om du surfar till ovan sida från en Linux-dator syns några terminalkommando som du använder för att installera \sbt\ i terminalen. 
+\item \textbf{Linux}. Om du surfar till ovan sida från en Linux-dator syns några terminalkommando som du använder för att installera \sbt\ i terminalen.
 
 \item \textbf{Windows}. Om du surfar till ovan sida från en Windows-dator visas en länk till en \code{.msi}-fil. Ladda ner och dubbelklicka på den.
 
@@ -72,63 +72,63 @@ \subsection{Installera sbt}
 
 \noindent När du kör sbt första gången kommer ytterligare filer att laddas ner och installeras och delar av denna process kan ta lång tid. Ha tålamod och avbryt inte körningen, även om inget speciellt ser ut att hända på ett bra tag.
 
-%% Below is problematic for some libs noty compiled for 2.11.x as it causes dependency problems... 
+%% Below is problematic for some libs noty compiled for 2.11.x as it causes dependency problems...
 %\subsection{Anpassa sbt}
 %För att följa de versioner av \sbt\ och Scala som vi använder i kursen, skapa med hjälp av editor en textfil med namnet \code{global.sbt} i katalogen \code{.sbt} som ligger i din hemkatalog efter att du installerat klart \sbt. Fråga vid behov någon om hjälp om hur man hittar dolda filer i ditt operativsystem, då filer som börjar med punkt ibland inte syns i filbläddraren. Filen ska ha följande innehåll:
 %\begin{Code}
 %scalaVersion := "2.11.8"
 %
 %sbtVersion := "0.13.12"
-%\end{Code} 
+%\end{Code}
 %
 %\noindent När du kör igång \sbt\ igen kommer ovan inställningar eventuellt medföra vissa nedladdningar, men när det är gjort har du rätt versioner tillgängliga och \sbt\ kommer att starta snabbt nästa gång.
 
 
 \subsection{Använda sbt}
-\sbt\ är konstruerat för att klara mycket stora projekt, men det är enkelt att använda \sbt\ även om du bara har ett litet projekt med någon enstaka kodfil. Med \sbt\ installerat, är det bara att skriva 
+\sbt\ är konstruerat för att klara mycket stora projekt, men det är enkelt att använda \sbt\ även om du bara har ett litet projekt med någon enstaka kodfil. Med \sbt\ installerat, är det bara att skriva
 \begin{REPLnonum}
-$ sbt run
-\end{REPLnonum} 
+> sbt run
+\end{REPLnonum}
 i terminalen i det bibliotek där dina kodfiler ligger. \sbt\ letar då upp och kompilerar alla de \code{.scala}-filer som ligger i biblioteket och, om det bara finns ett objekt med main-metod, kör \sbt\ igång denna main-metod direkt, förutsatt att kompileringen kan avlutas utan fel. Även \code{.java}-filer kompileras automatiskt om de ligger i samma bibliotek.
 
-Om du enbart skriver \sbt\ körs det interaktiva kommandoskalet igång, där du kan köra kommando så som \code{compile} och \code{run}. Om du skriver ett \code{~} före kommandot \code{run}, enligt nedan kommer \sbt\ vara aktivt i bakgrunden medan du editerar och så fort du sparar en ändring kommer omkompilering av ändrade kodfiler ske, varefter main-metoden exekveras om kompileringen lyckades. 
- 
+Om du enbart skriver \sbt\ körs det interaktiva kommandoskalet igång, där du kan köra kommando så som \code{compile} och \code{run}. Om du skriver ett \code{~} före kommandot \code{run}, enligt nedan kommer \sbt\ vara aktivt i bakgrunden medan du editerar och så fort du sparar en ändring kommer omkompilering av ändrade kodfiler ske, varefter main-metoden exekveras om kompileringen lyckades.
+
 \begin{REPLnonum}
-$ sbt
+> sbt
 [info] Set current project to hello (in build file:/home/bjornr/hello/)
 > ~run
-[info] Running hello 
+[info] Running hello
 Hello, World!
 [success] Total time: 0 s, completed Aug 9, 2016 9:50:16 PM
 1. Waiting for source changes... (press enter to interrupt)
 [info] Compiling 1 Scala source to /home/bjornr/hello/target/scala-2.10/classes...
-[info] Running hello 
+[info] Running hello
 Hello again, World!
 [success] Total time: 1 s, completed Aug 9, 2016 9:50:45 PM
 2. Waiting for source changes... (press enter to interrupt)
-\end{REPLnonum} 
+\end{REPLnonum}
 
 \noindent I ovan körning gör \sbt\ en omkompilering, efter att en ändring av utskriftssträngen sparats.
-
+\begin{figure}[H]
 \begin{Code}
 // in file hello.scala
 
 object hello {
   def main(args: Array[String]): Unit = {
-    println("Hello again, World!") // added 'again' then Ctrl+S 
+    println("Hello again, World!") // added 'again' then Ctrl+S
   }
 }
 \end{Code}
-
+\end{figure}
 
 \subsubsection{Katalogstruktur}
 
-Om man har kod i underkataloger förutsätter \sbt\ att du följer en viss, specifik katalogstruktur. Denna katalogstruktur används även av andra byggverktyg, så som Maven, och fungerar även i många utvecklingsmiljöer så som Eclipse och IntelliJ. 
+Om man har kod i underkataloger förutsätter \sbt\ att du följer en viss, specifik katalogstruktur. Denna katalogstruktur används även av andra byggverktyg, så som Maven, och fungerar även i många utvecklingsmiljöer så som Eclipse och IntelliJ.
 
 Det blir också mindre rörigt och lättare för alla att hitta i projektets kataloger om dina kodfiler placeras i en given struktur som är allmänt accepterad.
-Placera därför gärna dina kodfiler i underkataloger enligt strukturen som visas i figur \ref{fig:sbt:dir-structure}. 
+Placera därför gärna dina kodfiler i underkataloger enligt strukturen som visas i figur \ref{fig:sbt:dir-structure}.
 
-\begin{figure}
+\begin{figure}[H]
 \centering
 
 \begin{lstlisting}[frame=none, backgroundcolor=]
@@ -162,37 +162,30 @@ \subsubsection{Katalogstruktur}
 
 \subsubsection{Konfigurera dina byggen i filen \code{build.sbt}}
 
-Om du vill göra inställningar och även hjälpa andra att kunna återskapa dina byggen, så skapa en konfigurationsfil med namnet \code{build.sbt} och placera den i projektets baskatalog. Figur \ref{fig:sbt:build-file} visar en enkel byggkonfigurationsfil. Där väljer du namn på ditt projekt, sätter ett versionsnummer på ditt bygge, samt specificerar vilken version av Scala-kompilatorn du använder. Det senare är viktigt för att andra ska kunna bygga din kod under samma förutsättningar som du. 
+Om du vill göra inställningar och även hjälpa andra att kunna återskapa dina byggen, så skapa en konfigurationsfil med namnet \code{build.sbt} och placera den i projektets baskatalog. Figur \ref{fig:sbt:build-file} visar en minimal byggkonfigurationsfil som specificerar vilken version av Scala-kompilatorn du använder, så att andra ska kunna bygga din kod under samma förutsättningar som du.
 
 \begin{figure}[H]
 \centering
 \begin{Code}
-lazy val root = (project in file(".")).
-  settings(
-    name := "hello",
-    version := "1.0",
-    scalaVersion := "2.11.8"
-  )
+scalaVersion := "2.12.3"
 \end{Code}
-\caption{En enkel konfigurationsfil för \sbt\ som innehåller det som kallas en \textit{build definition} i \sbt-termer. Filen ska ha namnet \code{build.sbt} och vara placerad i projektets baskatalog.}
+\caption{En minimal konfigurationsfil för \sbt. Filen ska ha namnet \code{build.sbt} och vara placerad i projektets baskatalog.}
 \label{fig:sbt:build-file}
 \end{figure}
 
-\noindent Du kan läsa mer om alla möjligheter med \sbt\ och hur man skapar mer avancerade byggkonfigurationsfiler här: \\
-\url{http://www.scala-sbt.org/0.13/docs/}
+\noindent Du kan läsa mer om alla möjligheter med \sbt\ och hur man skapar mer avancerade byggkonfigurationsfiler här: \url{http://www.scala-sbt.org}
 
-Du hittar ett exempel på en avancerad byggdefinition i kursens repo, som har många aggregerade underprojekt, bl.a. för att bygga detta kompedium med \code{pdflatex}. I byggdefinitionen instrueras även \sbt\ att bygga kursens workspace, samt att generera de speciella projektfiler som Eclipse+ScalaIDE kräver med en \sbt-plugin. Filen finns här: \\
-\url{https://github.com/lunduniversity/introprog/blob/master/build.sbt}
+% Du hittar ett exempel på en avancerad byggdefinition i kursens repo, som har många aggregerade underprojekt, bl.a. för att bygga detta kompedium med \code{pdflatex}. I byggdefinitionen instrueras även \sbt\ att bygga kursens workspace, samt att generera de speciella projektfiler som Eclipse+ScalaIDE kräver med en \sbt-plugin. Filen finns här: \\
+% \url{https://github.com/lunduniversity/introprog/blob/master/build.sbt}
 
 \subsubsection{Lägga till beroenden}
 
 I filen \texttt{build.sbt} kan man lägga till s.k. beroenden till jar-filer med kod. Det finns på nätplatsen \textit{Maven Central} en mycket omfattande koddatabas, som är sökbar här \url{http://search.maven.org}, med en massa användbara öppenkällkodsprojekt. Du kan be \sbt\ att ladda ner den färdigkompilerade koden till vilket som helst av projekten på \textit{Maven Central} och automatiskt lägga till jar-filen till \code{classpath} så att koden blir tillgänglig direkt i ditt program.
 
-Till exempel kan du lägga till paketet \code{jline}\footnote{\url{https://github.com/jline/jline2}} som gör det möjligt att göra terminalinläsning från tangentbordet bara genom att lägga till denna rad i din \code{build.sbt} där \code{"2.14.2"} anger en specifik version.
+Till exempel kan du lägga till paketet \code{jline}\footnote{\url{https://github.com/jline/jline2}} som gör det möjligt att göra terminalinläsning från tangentbordet bara genom att lägga till denna rad i din \code{build.sbt} där \code{"2.14.5"} anger en specifik version.
 
 \begin{Code}
-libraryDependencies += "jline" % "jline" % "2.14.2"
+libraryDependencies += "jline" % "jline" % "2.14.5"
 \end{Code}
 
-Du kan läsa mer om hur man kan hantera beroenden med \sbt\ här: \\ \url{http://www.scala-sbt.org/0.13/docs/Library-Dependencies.html}
-
+% Du kan läsa mer om hur man kan hantera beroenden med \sbt\ här: \\ \url{http://www.scala-sbt.org/0.13/docs/Library-Dependencies.html}
diff --git a/compendium/postchapters/compile.tex b/compendium/postchapters/compile.tex
index 408f06652..1c2d83226 100644
--- a/compendium/postchapters/compile.tex
+++ b/compendium/postchapters/compile.tex
@@ -5,14 +5,14 @@ \chapter{Editera, kompilera och exekvera}\label{appendix:compile}
 
 \section{Vad är en editor?}
 
-En editor används för att redigera programkod. Det finns många olika editorer att välja på. Erfarna utvecklare lägger ofta mycket energi på att lära sig att använda favoriteditorns kortkommandon och specialfunktioner, eftersom detta påverkar stort hur snabbt kodredigeringen kan göras. 
+En editor används för att redigera programkod. Det finns många olika editorer att välja på. Erfarna utvecklare lägger ofta mycket energi på att lära sig att använda favoriteditorns kortkommandon och specialfunktioner, eftersom detta påverkar stort hur snabbt kodredigeringen kan göras.
 
-En bra editor har \textbf{syntaxfärgning} för språket du använder, så att olika delar av koden visas i olika färger. Då går det mycket lättare att läsa och hitta i koden. 
+En bra editor har \textbf{syntaxfärgning} för språket du använder, så att olika delar av koden visas i olika färger. Då går det mycket lättare att läsa och hitta i koden.
 
 Nedan listas några viktiga funktioner som man använder många gånger dagligen när man kodar:
 
 \begin{itemize}
-\item \textbf{Navigera}. Det finns flera olika sätt att flytta markören och bläddra genom koden. Alla editorer erbjuder sökmöjligheter, och de flesta editorer har även mer avancerade sökfunktioner där kodmönster kan identifieras och multipla sökträffar markeras över flera kodfiler. 
+\item \textbf{Navigera}. Det finns flera olika sätt att flytta markören och bläddra genom koden. Alla editorer erbjuder sökmöjligheter, och de flesta editorer har även mer avancerade sökfunktioner där kodmönster kan identifieras och multipla sökträffar markeras över flera kodfiler.
 
 \item \textbf{Markera}. Att markera kod kan göras på många sätt: med piltangenter+Shift, med olika speciella menyalternativ, med mus + dubbelklick eller trippelklick, etc. I vissa editorer finns även möjlighet att ha multipla markörer så att flera rader kan editeras samtidigt.
 
@@ -20,21 +20,21 @@ \section{Vad är en editor?}
 
 \item \textbf{Klipp ut}. Genom Ctrl+X för Cut och Ctrl+V för Paste, kan du lätt flytta kod. Att skriva kod är en stegvis process där man gör många förändringar under resans gång för att förbättra och vidareutveckla koden. Att flytta på kod för att skapa en bättre struktur är mycket vanligt.
 
-\item \textbf{Formatering}. Med indragningar, radbrytningar och nästlade block i flera nivåer får koden struktur. Många editorer kan hjälpa till med detta och har speciella kortkommandon för att ändra indragningsnivå inåt eller utåt. 
+\item \textbf{Formatering}. Med indragningar, radbrytningar och nästlade block i flera nivåer får koden struktur. Många editorer kan hjälpa till med detta och har speciella kortkommandon för att ändra indragningsnivå inåt eller utåt.
 
 \item \textbf{Parentesmatchning}. Olika former av parenteser, \code+ ( { [ ) } ] +,  behöver matchas för att koden ska fungera; annars går kompilatorn ofta helt vilse och konstiga felmeddelanden kan peka på helt fel plats i koden. En bra kodeditor kan hjälpa dig att markera vilka parentespar som hör ihop så att du undviker att spendera för mycket tid med att leta efter en parentes som saknas eller står i vägen.
-    
+
 \end{itemize}
 
-I en integrerad utvecklingsmiljö, en s.k. IDE, (se appendix \ref{appendix:ide}) finns en inbyggd editor som, tack vare ett mer intimt samarbete med kompilatorn, kan erbjuda ännu fler avancerade funktioner som hjälper dig i kodarbetet. Men även när du lärt dig använda en IDE kommer du fortfarande ha stor nytta av en ''vanlig'' editor. Ofta har man flera terminalfönster igång, tillsammans med flera editorfönster och en IDE. 
+I en integrerad utvecklingsmiljö, en s.k. IDE, (se appendix \ref{appendix:ide}) finns en inbyggd editor som, tack vare ett mer intimt samarbete med kompilatorn, kan erbjuda ännu fler avancerade funktioner som hjälper dig i kodarbetet. Men även när du lärt dig använda en IDE kommer du fortfarande ha stor nytta av en ''vanlig'' editor. Ofta har man flera terminalfönster igång, tillsammans med flera editorfönster och en IDE.
 
 \section{Välj editor}\label{appendix:compile:edit}
 
-I tabell \ref{edit:popular-editors} visas en lista med några populära editorer. Det är en stor fördel om din favoriteditor finns på flera plattformar så att du har nytta av dina förvärvade färdigheter när du behöver växla mellan olika operativsystem. 
+I tabell \ref{edit:popular-editors} visas en lista med några populära editorer. Det är en stor fördel om din favoriteditor finns på flera plattformar så att du har nytta av dina förvärvade färdigheter när du behöver växla mellan olika operativsystem.
 
-I denna kurs rekommenderas \textbf{\texttt{atom}}, eftersom den är öppen, gratis och finns för Linux, Windows och Mac, och har bra stöd för Scala. 
+I denna kurs rekommenderas \textbf{\texttt{atom}}, eftersom den är öppen, gratis och finns för Linux, Windows och Mac, och har bra stöd för Scala.
 
-Om du jobbar i Linux och hellre vill börja med en enklare editor, kan du prova \texttt{gedit}. När du behöver mer avancerade funktioner kan du gå över till \texttt{atom}. 
+Om du jobbar i Linux och hellre vill börja med en enklare editor, kan du prova \texttt{gedit}. När du behöver mer avancerade funktioner kan du gå över till \texttt{atom}.
 
 Det kan vara bra att lära sig de allra mest basala kommandona (starta, spara, ändra text och avsluta) i editorerna \texttt{vim} och \texttt{nano}, eftersom dessa kan köras direkt i terminalen, även vid fjärrinloggning utan fönstersystem, och finns förinstallerade i de flesta Linux-system.
 
@@ -52,25 +52,22 @@ \section{Välj editor}\label{appendix:compile:edit}
 Atom & Öppen, fri och gratis. Finns för Linux, Windows, \& Mac. Är förinstallerad på LTH:s Linux-datorer och startas med kommandot \verb+atom+ i ett terminalfönster. Öppenkällkodsprojektet startades av GitHub och har en aktiv gemenskap med många utvecklare. Det finns en uppsjö med användbara plugins som enkelt kan installeras inifrån programmet med hjälp av en inbyggd pakethanterare i vilken du kan söka efter paketet \verb+language-scala+ och klicka ''install'' så får du syntaxfärgning för Scala.
 \newline \url{https://atom.io/} \\
 
-Gedit & Öppen, fri och gratis. Lätt att lära men inte så avancerad. Finns för Linux, Windows \& Mac. Är förinstallerad på LTH:s Linux-datorer och startas med kommandot \verb+gedit+ i ett terminalfönster\newline  
+Gedit & Öppen, fri och gratis. Lätt att lära men inte så avancerad. Är förinstallerad på LTH:s Linux-datorer och startas med kommandot \verb+gedit+ i ett terminalfönster\newline
  \url{https://wiki.gnome.org/Apps/Gedit} \\
 
-Nano & \TODO \\
-
-
-Vim & Öppen, fri och gratis. Hög inlärningströskel. Finns för Linux, Windows, \& Mac. Är förinstallerad på LTH:s Linux-datorer och startas med kommandot \verb+vim+ i ett terminalfönster\newline \url{http://www.vim.org/} \\
+Nano & Öppen, fir och gratis. Mycket rudimentär editor för enkla jobb i terminalen. Är förinstallerad på de flesta Linux-system på planeten Jorden. Startas med kommandot \verb+nano+\newline \url{https://www.nano-editor.org/}\\
 
-Emacs & Öppen, fri och gratis. Hög inlärningströskel. Finns för Linux, Windows, \& Mac. Är förinstallerad på LTH:s Linux-datorer och startas med kommandot \verb+emacs+ i ett terminalfönster\newline \url{http://www.gnu.org/software/emacs/} \\
+Notepad++ & Öppen, fri och gratis. Finns endast för Windows. \newline \url{https://notepad-plus-plus.org/} \\
 
 Sublime Text& Sluten källkod. Gratis att prova på, men programmet föreslår då och då att du köper en licens. Finns för Windows, Mac, Linux. \newline
  \url{http://www.sublimetext.com/3} \\
 
+Vim & Öppen, fri och gratis. Hög inlärningströskel. Finns för Linux, Windows, \& Mac. Är förinstallerad på LTH:s Linux-datorer och startas med kommandot \verb+vim+ i ett terminalfönster\newline \url{http://www.vim.org/} \\
 
-Notepad++ & Öppen, fri och gratis. Finns endast för Windows. \newline \url{https://notepad-plus-plus.org/} \\
-
+Emacs & Öppen, fri och gratis. Hög inlärningströskel. Finns för Linux, Windows, \& Mac. Är förinstallerad på LTH:s Linux-datorer och startas med kommandot \verb+emacs+ i ett terminalfönster\newline \url{http://www.gnu.org/software/emacs/} \\
 
-Textwrangler & Sluten källkod. Gratis. Lätt att lära men inte så avancerad. Finns endast för Mac.  
-\newline \url{http://www.barebones.com/products/textwrangler/} \\
+% Textwrangler & Sluten källkod. Gratis. Lätt att lära men inte så avancerad. Finns endast för Mac.
+% \newline \url{http://www.barebones.com/products/textwrangler/} \\
 
 \end{longtable}
 
@@ -78,7 +75,7 @@ \section{Välj editor}\label{appendix:compile:edit}
 
 \section{Vad är en kompilator?}
 
-En \textbf{kompilator} \Eng{compiler} är ett program som läser programtext och översätter den till exekverbar maskinkod, så som visas i figur \ref{fig:appendix:compiler}. Programtexten som kompileras kallas källkod och utgörs av text som följer reglerna för ett programmeringsspråk, till exempel Scala eller Java. 
+En \textbf{kompilator} \Eng{compiler} är ett program som läser programtext och översätter den till exekverbar maskinkod, så som visas i figur \ref{fig:appendix:compiler}. Programtexten som kompileras kallas källkod och utgörs av text som följer reglerna för ett programmeringsspråk, till exempel Scala eller Java.
 
 \begin{figure}[H]
 \centering
@@ -103,10 +100,10 @@ \section{Vad är en kompilator?}
 
 Om kompileringen inte lyckas skriver kompilatorn ut ett felmeddelande och ingen maskinkod genereras. Det är inte lätt att bygga en kompilator som ger bra felmeddelanden i alla lägen, men felmeddelandet ger oftast goda ledtrådar till felorsaken efter att man lärt sig tolka det programmeringsspråksspecifika vokabulär som kompilatorn använder.
 
-Även om programmet kompilerar utan felmeddelande och genererar exekverbar maskinkod, är det vanligt att programmet ändå inte fungerar som det är tänkt. Ibland är det mycket svårt att lista ut vad problemet beror på och man kan behöva göra omfattande undersökningar av vad som händer under körningen, genom att t.ex. skriva ut olika variablers värden eller på annat sätt ändra koden och se vad som händer. Denna process kallas felsökning eller avlusning \Eng{debugging}, och är en väsentlig del av all systemutveckling. 
+Även om programmet kompilerar utan felmeddelande och genererar exekverbar maskinkod, är det vanligt att programmet ändå inte fungerar som det är tänkt. Ibland är det mycket svårt att lista ut vad problemet beror på och man kan behöva göra omfattande undersökningar av vad som händer under körningen, genom att t.ex. skriva ut olika variablers värden eller på annat sätt ändra koden och se vad som händer. Denna process kallas felsökning eller avlusning \Eng{debugging}, och är en väsentlig del av all systemutveckling.
 
-En uttömmande testning av ett större program, som kör programmets \textit{alla} möjliga exekveringsvägar, är i praktiken omöjlig att genomföra inom rimlig tid, då antalet kombinationsmöjligheter växer mycket snabbt med storleken på programmet. 
-Därför är kompilatorn ett mycket viktigt hjälpmedel. Med hjälp av den analys och de kontroller som görs av kompilatorn kan många buggar, som annars vore mycket svåra att hitta, undvikas och åtgärdas i kompileringsfasen, redan \textit{innan} man exekverar programmet. 
+En uttömmande testning av ett större program, som kör programmets \textit{alla} möjliga exekveringsvägar, är i praktiken omöjlig att genomföra inom rimlig tid, då antalet kombinationsmöjligheter växer mycket snabbt med storleken på programmet.
+Därför är kompilatorn ett mycket viktigt hjälpmedel. Med hjälp av den analys och de kontroller som görs av kompilatorn kan många buggar, som annars vore mycket svåra att hitta, undvikas och åtgärdas i kompileringsfasen, redan \textit{innan} man exekverar programmet.
 
 
 \section{Java JDK}
@@ -119,13 +116,13 @@ \section{Java JDK}
 
 \item Exekveringsmiljön Java Runtime Enviroment (JRE) med kommandot \texttt{java} som drar igång den virtuella javamaskinen (Java Virtual Machine) som kan ladda och exekvera bytekod lagrade i klassfiler.
 
-\item Programmet \texttt{jar} som packar ihop många sammanhörande klassfiler till en enda jar-fil som lätt kan distribueras via nätet och sedan köras med \texttt{java}-kommandot på alla maskiner med JRE. 
+\item Programmet \texttt{jar} som packar ihop många sammanhörande klassfiler till en enda jar-fil som lätt kan distribueras via nätet och sedan köras med \texttt{java}-kommandot på alla maskiner med JRE.
 
 \item Programmet \texttt{javap} som läser klassfiler och skriver ut vad de innehåller i ett format som kan läsas av människor (ett sådant program kallas disassembler).
 
-\item I JDK ingår också en mycket stor mängd färdiga programbibliotek med stöd för nätverkskommunikation, filhantering, grafik, kryptering och en massa annat som behövs när man bygger moderna system. 
+\item I JDK ingår också en mycket stor mängd färdiga programbibliotek med stöd för nätverkskommunikation, filhantering, grafik, kryptering och en massa annat som behövs när man bygger moderna system.
 
-\end{itemize}  
+\end{itemize}
 
 \noindent Du kan läsa mer om Java och dess historik här: \\
 \href{https://en.wikipedia.org/wiki/Java_(programming_language)}{https://en.wikipedia.org/wiki/Java\_(programming\_language)}
@@ -136,111 +133,117 @@ \subsection{Kontrollera om du har JDK installerat}\label{appendix:compile:check-
 \begin{REPLnonum}
 javac -version
 \end{REPLnonum}
-Då ska ungefär följande skrivas ut (där siffran 101 kan vara något annat):
+Då ska ungefär följande skrivas ut (där siffran 141 kan vara något annat):
 \begin{REPLnonum}
-javac 1.8.0_101
+javac 1.8.0_141
 \end{REPLnonum}
 Om utskriften säger att \texttt{javac} saknas, installera JDK enl. nedan.
 
-Du kanske redan har enbart Java Runtime Environment (JRE) installerad, men inte JDK. Då saknar du Javakompilatorn \texttt{javac} m.m. och behöver installera JDK, se nedan. Du kan kolla om du har JRE genom att skriva \texttt{java -version} (alltså utan \texttt{c} efter \texttt{java}). Eller så har du redan JDK installerad men inte rätt bibliotek i din PATH; se vidare nedan ang. uppdatering av PATH.
+Du kanske redan har enbart Java Runtime Environment (JRE) installerad, men inte JDK. Då saknar du Javakompilatorn \texttt{javac} m.m. och behöver installera JDK, se nedan. Du kan kolla om du har JRE genom att skriva \texttt{java -version} (alltså utan \texttt{c} efter \texttt{java}). Eller så har du redan JDK installerad men inte rätt bibliotek i din PATH; se vidare under ''Verktyg'' på kurshemsidan.
 
 
 
 \subsection{Installera JDK}\label{appendix:compile:install-jdk}
 
-Det finns flera JDK-distributioner att välja mellan, varav Oracle JDK och Azul Zulu OpenJDK är två exempel. Oracle JDK har störst spridning och är förinstallerad på LTH:s datorer. För att installera JDK på din egen dator behöver du gå igenom flera steg, varav vissa behöver anpassas efter det operativsystem du kör, enligt nedan. 
-På kurshemsidan under ''Verktyg'' finns kompletterande instruktioner:  \url{http://cs.lth.se/pgk/verktyg} 
-
-
-Din användaridentitet behöver ha administratörsrättigheter för att du ska kunna genomföra installationen.
-
-
-
-\subsubsection{Linux} 
-För Ubuntu: läs igenom och följ sedan dessa instruktioner noga: \\ \href{http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html}{www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html}
-
-För andra Linux-distributioner, kör detta i terminalen (funkar även i Ubuntu, men du får med detta kommando inte Oracles aningen snabbare JVM): \\ \texttt{sudo apt-get install openjdk-8-jdk}
-
-\subsubsection{Windows/macOS}
-
-\begin{enumerate}
-\item Installera senaste JDK från Oracle. Om du inte har installerat JDK förr på din dator så be gärna någon kurskamrat med erfarenhet av detta att assistera dig medan du följer stegen nedan. 
-
-\begin{enumerate}
-\item Surfa till Oracles hemsida för Java SE här: \\ \url{http://www.oracle.com/technetwork/java/javase/downloads/}
-
-\item Klicka på rubriken ''Java SE 8u101 / 8u102'' och på nästa sida klicka på knappen ''Accept License Agreement'' i listan under rubriken ''Java SE Development Kit 8u101''. (Siffrorna 101 eller 102 kan vara annorlunda om senare versioner tillkommit.)
-
-\item Välj rätt version av operativsystem (Windows x64 eller Mac OS X). Det är viktigt att du väljer x64, d.v.s 64-bitarsvarianten som gäller för alla moderna datorer.
-
-\item Klicka på länken och en stor fil kommer laddas ner till din dator.
-
-\item Installera när filen laddats färdigt. 
-
-\end{enumerate}
-
-\item Uppdatera PATH, så att du får tillgång till alla kommando i terminalen:
-\begin{itemize}
-\item För Windows görs detta enklast genom att ladda ner och sedan köra denna fil genom att dubbelklicka på den: \\ \mbox{\href{https://github.com/lunduniversity/introprog/raw/master/tools/windows-jdk-set-path.bat}{github.com/lunduniversity/introprog/raw/master/tools/windows-jdk-set-path.bat}}
-\item För macOS, läs här: \\ \href{https://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html}{docs.oracle.com/javase/8/docs/technotes/guides/install/mac\_jdk.html} 
-\\ \TODO finn ut bästa rådet att sätta path på mac; homebrew??? 
-
-\item Om något krånglar, be om hjälp. Om du behöver mer detaljer om PATH-uppdatering för java, läs här:  \href{https://java.com/sv/download/help/path.xml}{java.com/sv/download/help/path.xml} \\
-Om du kör engelska menyer byt \texttt{sv} mot \texttt{en} i adressen ovan.  Du kan ta reda på vilken katalog som ska läggas in sist i din PATH genom att bläddra bland dina systemfiler och undersöka var JDK har installerats; i Windows antagligen något liknande detta (kolla exakt vilket versionsnummer du har): \code|C:\Program Files\Java\jdk1.8.0_101\bin|
-\end{itemize}
-
-\item Starta om datorn. Det är först efter att en ny användarinloggning initierats, som PATH-tilldelningen får effekt.
-
-\item Kontrollera att \texttt{javac} fungerar enligt avsnitt \ref{appendix:compile:check-jdk}.
-\end{enumerate}
+Det finns flera JDK-distributioner att välja mellan, varav Oracle JDK och OpenJDK är två exempel. Oracle JDK har störst spridning och är förinstallerad på LTH:s datorer. För att installera JDK på din egen dator behöver du gå igenom flera steg, varav vissa behöver anpassas efter det operativsystem du kör, enligt nedan.
+
+På kurshemsidan under ''Verktyg'' finns detaljerade instruktioner om hur du gör:  \url{http://cs.lth.se/pgk/verktyg}
+
+%
+%
+%
+% Din användaridentitet behöver ha administratörsrättigheter för att du ska kunna genomföra installationen.
+%
+%
+%
+% \subsubsection{Linux}
+% För Ubuntu: läs igenom och följ sedan dessa instruktioner noga: \\ \href{http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html}{www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html}
+%
+% För andra Linux-distributioner, kör detta i terminalen (funkar även i Ubuntu, men du får med detta kommando inte Oracles aningen snabbare JVM): \\ \texttt{sudo apt-get install openjdk-8-jdk}
+%
+% \subsubsection{Windows/macOS}
+%
+% \begin{enumerate}
+% \item Installera senaste JDK från Oracle. Om du inte har installerat JDK förr på din dator så be gärna någon kurskamrat med erfarenhet av detta att assistera dig medan du följer stegen nedan.
+%
+% \begin{enumerate}
+% \item Surfa till Oracles hemsida för Java SE här: \\ \url{http://www.oracle.com/technetwork/java/javase/downloads/}
+%
+% \item Klicka på rubriken ''Java SE 8u101 / 8u102'' och på nästa sida klicka på knappen ''Accept License Agreement'' i listan under rubriken ''Java SE Development Kit 8u101''. (Siffrorna 101 eller 102 kan vara annorlunda om senare versioner tillkommit.)
+%
+% \item Välj rätt version av operativsystem (Windows x64 eller Mac OS X). Det är viktigt att du väljer x64, d.v.s 64-bitarsvarianten som gäller för alla moderna datorer.
+%
+% \item Klicka på länken och en stor fil kommer laddas ner till din dator.
+%
+% \item Installera när filen laddats färdigt.
+%
+% \end{enumerate}
+%
+% \item Uppdatera PATH, så att du får tillgång till alla kommando i terminalen:
+% \begin{itemize}
+% \item För Windows görs detta enklast genom att ladda ner och sedan köra denna fil genom att dubbelklicka på den: \\ \mbox{\href{https://github.com/lunduniversity/introprog/raw/master/tools/windows-jdk-set-path.bat}{github.com/lunduniversity/introprog/raw/master/tools/windows-jdk-set-path.bat}}
+% \item För macOS, läs här: \\ \href{https://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html}{docs.oracle.com/javase/8/docs/technotes/guides/install/mac\_jdk.html}
+% \\ Ge bästa rådet att sätta path på mac; HOMEBREW!!!
+%
+% \item Om något krånglar, be om hjälp. Om du behöver mer detaljer om PATH-uppdatering för java, läs här:  \href{https://java.com/sv/download/help/path.xml}{java.com/sv/download/help/path.xml} \\
+% Om du kör engelska menyer byt \texttt{sv} mot \texttt{en} i adressen ovan.  Du kan ta reda på vilken katalog som ska läggas in sist i din PATH genom att bläddra bland dina systemfiler och undersöka var JDK har installerats; i Windows antagligen något liknande detta (kolla exakt vilket versionsnummer du har): \code|C:\Program Files\Java\jdk1.8.0_101\bin|
+% \end{itemize}
+%
+% \item Starta om datorn. Det är först efter att en ny användarinloggning initierats, som PATH-tilldelningen får effekt.
+%
+% \item Kontrollera att \texttt{javac} fungerar enligt avsnitt \ref{appendix:compile:check-jdk}.
+% \end{enumerate}
 
 
 \section{Scala}
 
-Scala använder JDK som exekveringsmiljö, men erbjuder ytterligare verktyg specifika för Scala. I utvecklingspaketet för Scala ingår bl.a. kompilatorn \texttt{scalac} och även ett interaktivt kommandoskal kallat Scala REPL där du kan testa din Scala-kod rad för rad och se vad som händer direkt. 
+Scala använder JDK som exekveringsmiljö, men går även att köra i browsern med Scala.JS. I denna kurs använder vi i Scala på JMV.
+I en Scala-installation ingår bl.a. kompilatorn \texttt{scalac} och även ett interaktivt kommandoskal kallat Scala REPL där du kan testa din Scala-kod rad för rad och se vad som händer direkt.
 
 De flesta av kursens övningar görs i Scala REPL, medan laborationerna kräver kompilering av lite större program.
 
+Den officiella hemsidan för Scala finns här: \url{http://www.scala-lang.org/}
+
 Du hittar mer om Scalas historik och annan bakgrundsinformation här:\\\mbox{%
  \href{https://en.wikipedia.org/wiki/Scala_(programming_language)}{en.wikipedia.org/wiki/Scala\_(programming\_language)}
 }
 
-\subsection{Installera Scala \TODO{Uppdatera till Scala 2.12 ???}}
-
-Scala finns förinstallerat på LTH:s datorer. Du installerar Scala-kompilatorn och den interaktiva kodexperimentmiljön Scala REPL på din egen dator enligt nedan. 
-
-\begin{enumerate}
-\item Kontrollera att du har JDK installerad enligt avsnitt \ref{appendix:compile:check-jdk} och installera vid behov enligt avsnitt \ref{appendix:compile:install-jdk}.
-\item Surfa till denna hemsida för nedladdning av Scala 2.11.8: \\ \url{http://scala-lang.org/download/2.11.8.html}
-\item Klicka på ''Download'' av den variant som är relevant för ditt operativsystem och spara filen:
-
-\begin{enumerate}
-\item \textbf{Linux Ubuntu}: Filen heter \texttt{scala-2.11.8.deb} och installeras genom att dubbelklicka på filen eller via terminalkommandot:\\ \code{sudo apt install ~/Downloads/scala-2.11.8.deb} \\ Anpassa sökvägen ovan efter var du sparade filen. 
-\item \textbf{Windows}: Filen heter \texttt{scala-2.11.8.msi} och installationen startas med ett dubbelklick. Följ instruktionerna. Installationsprogrammet uppdaterar även din PATH åt dig och kommandot \texttt{scala} bör fungera efter omstart.
-\item \textbf{Mac}: Filen heter \texttt{scala-2.11.8.tgz} och kan packas upp på lämpligt ställe med terminalkommandot \texttt{tar -xvzf scala-2.11.8.tgz} och sedan är det underkatalogen \texttt{bin} som ska inkluderas i din PATH. \TODO klura ut säkraste rådet för PATH-uppdatering på mac -- enklast är nog att visa hur man installerar via homebrew
-\end{enumerate}
-\end{enumerate}
-Kontrollera, efter ev. omstart, att terminalkommandot \texttt{scala} nu kan användas för att starta Scala REPL på din dator:
-\begin{REPLnonum}
-$ scala
-Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
-Type in expressions for evaluation. Or try :help.
-
-scala> val msg = "hej"
-msg: String = hej
-
-scala> println(msg)
-hej
+\subsection{Installera Scala}
+
+Scala finns förinstallerat på LTH:s datorer. På kurshemsidan under ''Verktyg'' finns detaljerade instruktioner om hur du installerar Scala på din egen dator:  \\ \url{http://cs.lth.se/pgk/verktyg}
+
+% \begin{enumerate}
+% \item Kontrollera att du har JDK installerad enligt avsnitt \ref{appendix:compile:check-jdk} och installera vid behov enligt avsnitt \ref{appendix:compile:install-jdk}.
+% \item Surfa till denna hemsida för nedladdning av Scala 2.11.8: \\ \url{http://scala-lang.org/download/2.11.8.html}
+% \item Klicka på ''Download'' av den variant som är relevant för ditt operativsystem och spara filen:
+%
+% \begin{enumerate}
+% \item \textbf{Linux Ubuntu}: Filen heter \texttt{scala-2.11.8.deb} och installeras genom att dubbelklicka på filen eller via terminalkommandot:\\ \code{sudo apt install ~/Downloads/scala-2.11.8.deb} \\ Anpassa sökvägen ovan efter var du sparade filen.
+% \item \textbf{Windows}: Filen heter \texttt{scala-2.11.8.msi} och installationen startas med ett dubbelklick. Följ instruktionerna. Installationsprogrammet uppdaterar även din PATH åt dig och kommandot \texttt{scala} bör fungera efter omstart.
+% \item \textbf{Mac}: Filen heter \texttt{scala-2.11.8.tgz} och kan packas upp på lämpligt ställe med terminalkommandot \texttt{tar -xvzf scala-2.11.8.tgz} och sedan är det underkatalogen \texttt{bin} som ska inkluderas i din PATH. \TODO klura ut säkraste rådet för PATH-uppdatering på mac -- enklast är nog att visa hur man installerar via homebrew
+% \end{enumerate}
+% \end{enumerate}
+% Kontrollera, efter ev. omstart, att terminalkommandot \texttt{scala} nu kan användas för att starta Scala REPL på din dator:
+% \begin{REPLnonum}
+% > scala
+% Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
+% Type in expressions for evaluation. Or try :help.
+%
+% scala> val msg = "hej"
+% msg: String = hej
+%
+% scala> println(msg)
+% hej
+%
+% scala>
+% \end{REPLnonum}
 
-scala> 
-\end{REPLnonum}
- 
 
 \subsection{Scala Read-Evaluate-Print-Loop (REPL)}\label{appendix:compile:REPL}
 
 För många språk, t.ex. Scala och Python, finns det ett interaktivt program ämnat för terminalen som gör det möjligt att exekvera enstaka programrader och direkt se effekten. Ett sådant program kallas \textit{Read-Evaluate-Print-Loop} (REPL), eftersom det läser  och tolkar en rad i taget. Resultatet av evalueringen av din kod skrivs ut i terminalen och därefter är kommandoskalet redo för nästa kodrad.
 
-Kursens övningar bygger till stor del på att du använder Scala REPL för att undersöka principer och begrepp som ingår i kursen genom dina egna kodexperiment. Även när du på labbarna utvecklar större program med en editor och en IDE, är det bra att ha Scala REPL till hands. Då kan du klistra in delar av programmet du håller på att utveckla i Scala REPL och stegvis utveckla delprogram, som till slut fungerar så som du vill. 
+Kursens övningar bygger till stor del på att du använder Scala REPL för att undersöka principer och begrepp som ingår i kursen genom dina egna kodexperiment. Även när du på labbarna utvecklar större program med en editor och en IDE, är det bra att ha Scala REPL till hands. Då kan du klistra in delar av programmet du håller på att utveckla i Scala REPL och stegvis utveckla delprogram, som till slut fungerar så som du vill.
 
 I Scala REPL får du se typinformation för variabler och metoder, vilket är till stor hjälp när man försöker lista ut vad en kodrad innebär. Genom att öva upp din förmåga att dra nytta av Scala REPL, kommer din produktivitet öka.
 
@@ -256,7 +259,7 @@ \subsection{Scala Read-Evaluate-Print-Loop (REPL)}\label{appendix:compile:REPL}
 scala> inc(inc(inc(1)))
 res8: Int = 4
 
-scala> 
+scala>
 \end{REPLnonum}
 
 Med kommandot \texttt{:paste} försätter du Scala REPL i inklistringsläge \Eng{paste mode} och du kan då med Ctrl+V (eller Ctrl+Shift+V, eller eventuellt högerklick med musen, beroende på hur ditt terminalprogram är inställt och vilket operativsystem du kör) klistra in större sjok av kod. När du med Ctrl+D avslutar inklistringsläget tolkar Scala REPL alla raderna på en gång. Kommandot  \texttt{:paste} kan förkortas till  \texttt{:pa}, så som visas nedan. Koden mellan raderna som börjar med \texttt{//} klistrades in av användaren efter att ha kopierats från en editor i ett annat fönster.
@@ -278,10 +281,10 @@ \subsection{Scala Read-Evaluate-Print-Loop (REPL)}\label{appendix:compile:REPL}
 scala> Point3D(1,2)
 res6: Point3D = Point3D((1,2,0))
 
-scala> 
+scala>
 \end{REPLnonum}
 
-Många av de kortkommandon som fungerar i terminalens kommandoskal, fungerar också i Scala REPL. Gå gärna igenom listan i tabell \ref{fig:terminal:shortcuts} på sidan \pageref{fig:terminal:shortcuts}, och testa vad som händer i Scala REPL. Om du tränar upp din fingerfärdighet med dessa kortkommandon, går ditt arbete i Scala REPL väsentligt snabbare. 
+Många av de kortkommandon som fungerar i terminalens kommandoskal, fungerar också i Scala REPL. Gå gärna igenom listan i tabell \ref{fig:terminal:shortcuts} på sidan \pageref{fig:terminal:shortcuts}, och testa vad som händer i Scala REPL. Om du tränar upp din fingerfärdighet med dessa kortkommandon, går ditt arbete i Scala REPL väsentligt snabbare.
 
 Med kommandot \texttt{:help} får du se en lista med specialkommandon för Scala REPL, inklusive de som återfinns i tabell \ref{fig:repl:shortcuts} på sidan \pageref{fig:repl:shortcuts}.
 
@@ -290,22 +293,17 @@ \subsection{Scala Read-Evaluate-Print-Loop (REPL)}\label{appendix:compile:REPL}
     \caption{Några vanliga kommandon i Scala REPL.}
     \label{fig:repl:shortcuts}
 \begin{tabular}{r | c | l}
-\textit{Kommando} & \textit{Förk.} & \textit{Beskrivning} \\ \hline 
+\textit{Kommando} & \textit{Förk.} & \textit{Beskrivning} \\ \hline
  \texttt{:help}     & \texttt{:he} & visa lista med kommando och förklaringar\\
  \texttt{:paste}     & \texttt{:pa} & växla till inklistringsläge \Eng{paste mode}\\
  \texttt{:paste} \textit{path}    & \texttt{:pa} \textit{path} & klistra in en hel fil, t.ex. \code|:pa util/mio.scala|\\
- \texttt{:quit} & \texttt{:q}  & avsluta Scala REPL \\ 
+ \texttt{:quit} & \texttt{:q}  & avsluta Scala REPL \\
  \texttt{:require} \textit{path} & \texttt{:req} \textit{path} & jar-fil till classpath, t.ex. \texttt{:req lib/cslib.jar}\\
- 
- \texttt{:type} & \texttt{:t}  & visa typ med -v för ''verbose'', t.ex. \code|:t -v 42.0| \\ 
 
- \texttt{:warnings} & \texttt{:w}  & visa beskrivning av ev. varningar \\ 
+ \texttt{:type} & \texttt{:t}  & visa typ med -v för ''verbose'', t.ex. \code|:t -v 42.0| \\
+
+ \texttt{:warnings} & \texttt{:w}  & visa beskrivning av ev. varningar \\
 
 \end{tabular}
 
 \end{table}
-
-
-
-
-