Lecture 6 - Haskell Exercises
Auto-generated from
haskell/lecture06/*.hsbysync-notes.sh- edit the .hs files, not this note.
Related: Lecture 1 - Intro to Functional Programming, Haskell - Polymorphism Rule of Thumb
preparation.hs
-- Lecture 6 - Preparation
-- Højere-ordens-funktioner (13. oktober 2026)
-- Læsning: Kapitel 7 i Programming in Haskell + podcast.
--
-- Læringsmål:
-- * Forklare præcist, hvad en højere-ordens-funktion er, og hvad dens type er
-- * Forklare højere-ordens-funktioner på lister: map, filter, foldr og foldl
-- * Forstå de rekursive definitioner af almindelige højere-ordens-funktioner
-- * Anvende map, filter, foldr og foldl til at løse programmeringsopgaver
-- * Forklare og bruge funktionssammensætning (.)
-- ===== Prep 1 =====
-- Hvert bogstav i det latinske alfabet af små bogstaver har en position.
-- 'a' har position 1, 'c' har position 3 og 'h' har position 8.
-- I Haskell er enhver streng en liste af tegn, så String er den samme type som
-- [Char]. Vi kan definere en funktion positions, som, givet en streng af små
-- bogstaver str, giver os listen af positioner for tegnene i str. Som eksempel:
-- positions "abba" giver [1,2,2,1]
-- Brug funktioner af højere orden fra kapitel 7 til at definere positions.
-- Her er det nyttigt at huske, at den ordinale værdi af et tegn kan beregnes ved
-- hjælp af funktionen fromEnum, som findes i præludiet:
-- fromEnum 'a' er 97
-- fromEnum 'b' er 98
-- >>> fromEnum 'a'
-- >>> fromEnum 'b'
-- 97
-- 98
-- positions ::
-- positions str =
-- >>> :t positions
-- >>> positions "abba"
-- >>> positions "hej"
-- [1,2,2,1]
-- ===== Prep 2 =====
-- Funktionen sumsq tager et heltal n som argument og giver os summen af
-- kvadraterne af de første n heltal. Så sumsq n returnerer summen
-- 1^2 + 2^2 + ... + n^2
-- Som eksempel giver
-- sumsq 4 os 30
-- sumsq 9 os 285
-- Brug foldr til at definere sumsq - og brug ikke map.
--
-- Husk: foldr :: (a -> b -> b) -> b -> [a] -> b
-- sumsq ::
-- sumsq n =
-- >>> :t sumsq
-- >>> sumsq 4
-- >>> sumsq 9
-- 30
-- 285
exercises.hs
-- Lecture 6 - Exercises
-- (placeholder: write the task text as comments, then the solution below)
-- ===== Task 1 =====