START
SLUTT
Oppsett av maskin
#00
Varighet: 12 minutter
Vi introduserer serien i for Kodesnutt hvor vi skal lære oss det funksjonelle språket OCaml.
I første episoden ser vi på hvordan vi kan sette opp maskinen for å kjøre kode. Vi ser på REPL, merlin og hvordan man kan sette det opp i VSCode.
Print & Semikolon
#01
Varighet: 6 minutter
Semikolon er kanskje en interessant greie med OCaml, da man noen ganger bruker det dobbelt opp med “;;”. Hvorfor det?
Vi skal og se hvordan vi kan printe ut til konsollen.
Primitive datatyper
#02
Varighet: 6.5 minutter
I denne episoden ser vi på hvilke primitive datatyper som eksisterer i språket, og ser litt på hvordan operasjoner fungerer på typene.
Funksjoner
#03
Varighet: 5 minutter
Vi ser på et ganske sentralt konsept i funksjonelle språk: Funksjoner.
Hvordan definerer vi funksjoner, og hvordan fungerer de?
Automatisk uthenting av typer
#04
Varighet: 6 minutter
Det kan jo bli veldig slitsomt om vi må eksplisitt si hva slags type absolutt alt er. Heldigvis er OCaml veldig flink til å finne ut av det selv og sette typene for oss.
I denne episoden ser vi på det konseptet, ofte kalt “inferring types”.
Manuelle typer for funksjoner
#05
Varighet: 7 minutter
Forrige episode så vi på hvordan vi i stor grad kan overlate typer til å bli automatisk kalkulert av OCaml-kompilatoren. Men noen ganger så ønsker vi å sette dette eksplisitt og manuelt.
Vi har sett på hvordan det kan gjøres med variabler, men hvordan kan vi sette eksplisitte typer for funksjoner?
Invokasjon av funksjoner
#06
Varighet: 7 minutter
Alle funksjoner i OCaml er implisitt curried. Det betyr at om vi ikke oppfyller alle argumentene, så vil det returneres en ny implisitt curried funksjon som tar færre argumenter – helt til parameterlisten er komplett.
I denne delen av OCaml-serien ser vi på hvordan dette funker i OCaml.
Infiksfunksjoner og operasjoner
#07
Varighet: 9.5 minutter
I ML-baserte språk som OCaml, kan man spesifisere sin egne operasjoner, eller funksjoner som blir kalt mellom argumenter fremfor prefikset. Det betyr at operasjoner i språket er funksjoner som alt annet. I denne episoden ser vi på hvordan det fungerer og hvordan vi kan spesifisere egne infiks-funksjoner.
Vi skal og se på hvordan vi kan bestemme presendens uten å bruke paranteser.
Lister
#08
Varighet: 7 minutter
Det er også lister i OCaml. Det er kanskje implementert på en litt morsom måte med bruk av en “cons operator”.
I denne episoden ser vi på hvordan lister fungerer i OCaml og hvordan vi kan bruke de til å holde på informasjon.
Tupler
#09
Varighet: 7 minutter
I forrige episode så vi på hvordan vi kan bruke lister til å gruppere informasjon. Men lister kan ikke holde på informasjon av miksede typer.
Det kan derimot tupler! I denne episoden ser vi på hva tupler er og hvordan vi kan bruke de som lommer av informasjon.
Records og typealiaser
#10
Varighet: 8 minutter
Man kommer ganske langt med lister og tupler, men noen ganger vil man ha informasjon i en mer strukturert form.
I OCaml har man records som kan ligne på objekter fra språk som JavaScript, men de er immutable og value types. Hva det betyr kan vi se på i ukas episode!
Varianter og typekonstruktører
#11
Varighet: 7 minutter
I OCaml (og andre ML-baserte språk) har man noe kalt varianter (eller union types) og typekonstruktører. En veldig kraftig type-måte som gjør at språket kan bli svært fleksibelt. I enkleste form virker det som enums, men i avansert bruk kan det brukes til å f.eks implementere lenkede lister.
I denne episoden ser vi på hvordan dette fungerer og hvordan vi kan bruke det til å implementere en maybe type som sikrer oss mot feil som null reference exceptions.
Pattern matching av options
#12
Varighet: 8 minutter
ML-baserte språk (og andre) har gjerne en form for pattern matching innebygd. En veldig nyttig språkegenskap for å finne igjen verdier i konstruksjoner eller som rene verdier. Det fungerer særlig godt med varianter som vi så på i forrige episode.
I denne episoden ser vi på hvordan vi kan bruke pattern matching for å bruke maybes/options og pakke ut verdier.
Pattern matching av variants og literals
#13
Varighet: 9 minutter
Vi fortsetter å se på det sentrale konseptet i OCaml: Pattern Matching. I forrige episode så vi hvordan vi kunne pakke ut verdier fra options (eller maybes om du vil).
I denne episoden skal vi se mer på generell pattern matching av varianter og av literals (strenger, ints osv).
Pattern matching av records
#14
Varighet: 7 minutter
Fortsettelse av pattern matching i OCaml. Vi utforsker mer av hva vi kan bruke det til og ser at vi og kan kombinere destrukturering av records med pattern matching.
En måte å matche på spesifikke records og hente ut data i samme slengen. Dette gjør at uthenting av info kan være ganske deklerativt og pattern matching hjelper oss til å unngå fallgruver med ikke-matchende caser.
Pattern matching med when
#15
Varighet: 6 minutter
Enda en fortsettelse hvor vi dykker litt i egenskapene til pattern matching i OCaml. I denne episoden ser vi på hvordan vi kan matche med records, men samtidig luke ut mer ved bruk av conditionals via nøkkelordet when
.
Pattern matching av lister
#16
Varighet: 8 minutter
I OCaml er lister en kul konstruksjon. Faktisk er det et type-konstruksjon, implementert som en varians med en rekursiv infiks konstruktør. Og det kan selvfølgelig pattern matches og destruktureres.
I nest siste episode av serien ser vi på hvordan vi kan hente ut info fra lister.
Records og typealiaser
#17
Varighet: 16 minutter
Dette er siste episode i serien. Nå har vi kommet ganske langt i å lære oss basisen av språket OCaml, og hvordan vi kan tenke funksjonelt.
I denne episoden ser vi på litt mer kode. Nå ser vi på hvordan vi kan splitte opp problem til subset av problem med rekursjon: Funksjoner som kaller seg selv. Et konsept som er ganske vanlig i funksjonelle språk.
I tillegg vil vi se på hvordan vi kan bruke liste-iteratorer og debugger i VSCode.