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.