Introduktion till SML Nr 2 - PowerPoint PPT Presentation

About This Presentation
Title:

Introduktion till SML Nr 2

Description:

Introduktion till SML Nr 2 V rden, typer och funktioner N gra begrepp interaktiv fr gor och svar v xelvis mellan dator och anv ndare prompt Visas n r systemet ... – PowerPoint PPT presentation

Number of Views:111
Avg rating:3.0/5.0
Slides: 43
Provided by: Olof3
Category:
Tags: sml | introduktion | till

less

Transcript and Presenter's Notes

Title: Introduktion till SML Nr 2


1
Introduktion till SMLNr 2
  • Värden, typer och funktioner

2
Några begrepp
  • interaktiv frågor och svar växelvis mellan dator
    och användare
  • prompt Visas när systemet är beredd att ta emot
    kommandon
  • operator En symbol för en funktion med två
    argument t ex

3
SML program
  • Funktionsdefinitioner
  • Värdesdefinitioner
  • Uttryck
  • Dessutom
  • Typdefinitioner
  • Undantagsdefinitioner
  • Moduler
  • etc

4
Värden, uttryck och typer
  • Typen beskriver en grupp värden.
  • Varje värde har en och endast en typ.
  • En typ kan vara sammansatt av flera andra typer.
  • Uttrycken beräknas till värden.

5
Interaktivt
  • SML är ett interaktivt system.
  • - 34 45
  • gt val it 79 int
  • Givet ett uttryck eller en definition beräknar
    systemet dess värde och typ.
  • Alla uttryck vid prompten avslutas med semicolon
  • SML skiljer på stora och små bokstäver,Thunk ,
    THUNK och thunk är olika namn.

6
Grundläggande typer
  • Booleska
  • - truegt true bool
  • Heltal
  • - 5gt 5 int
  • Reella tal
  • - 34.87gt 34.87 real
  • Strängar
  • - "This is a string"gt "This is a string"
    string

7
Booleska
  • Namn bool
  • Värden true, false
  • Operatorer not, orelse, andalso,
    if...then...else...
  • Jämföra , ltgt
  • Not Resultatet från jämförelse operatorerna gt,
    lt, gt, lt och likhets operatorerna , ltgt är en
    bool

8
Booleska exempel
  • - not truegt false bool
  • - true andalso falsegt false bool
  • - (false orelse not false) andalso not (not
    true)gt true bool

9
Heltal
  • Namn int
  • Värden Alla heltal, ... 3, 2, 1, 0, 1, 2, 3,
    ...
  • Operatorer , , -, , div, mod
  • Jämföra , ltgt, gt, lt, gt, lt

10
Heltal exempel
  • - 5 4gt 1 int
  • - (12 21) (2 1) - 23gt 76 int
  • - 24 2 6 4 2gt true bool
  • - 26 div 3 lt 26 mod 3gt false bool

11
Reella tal
  • Namn real
  • Värden Alla flyttal (reella)
    2E321.07.8E30.03.2E101.03.8E43
  • Operatorer , -, , /, sqrt, sin,
  • Jämföra , ltgt, gt, lt, gt, lt

12
Reella tal, exempel
  • - 23.0 34.0gt 782.000 real
  • - 29E23 / (2E4 22E1)gt 1.31830E24 real
  • - 33.02 10.0 - 100.0gt 230.200 real
  • - 34.0 gt sqrt(34.0 34.0)gt true bool

13
Numerisk precision
  • Heltalen har begränsad storlek
  • Reella talen mycket större eller mindre men ej
    exakta.
  • Om tal blir för stora eller för små kan man få
    fel meddelande.

14
Strängar
  • Namn string
  • Värden en sekvens av tecken mellan
    situationstecken ("), "Hej", "Flera konstiga
    tecken är möjliga!"
  • Operatorer (konkatenering, sammanslagning),
    explode, implode,chr, ord
  • Jämföra , ltgt, gt, lt, gt, lt

15
Strängar exempel
  • - "Hej ""Hej!"gt "Hej Hej!" string
  • - size "En lång sträng"gt 14 int
  • - size ("Detta"" " " blir en
    lååååååååång " "sträng")gt 34 int
  • - "AAAA" lt "BBBB"gt true

16
Unit
  • Namn unit
  • Värden () (unit)
  • Operatorer Inga
  • Jämföra , ltgt
  • Not Typen med endast ett värde. Används för
    funktioner som inte behöver något värde som
    argument eller för funktioner som inte ger något
    egentligt värde som resultat.

17
Sammansatta typer
  • Ett värde av en enkel (grundläggande) typ är
    odelbart och kan inte delas upp eller separeras.
  • Ett värde av en sammansatta typ består av flera
    delar och kan plockas isär.

18
Tuppler
  • En sekvens av ett bestämt antal mixade typer
  • Använd för att representera en grupp av
    egenskaper
  • (,.,,)
  • - ("Saab",2,true)gt ("Saab",2,true) string
    int bool
  • Kan även innehålla tuppler
  • - ("Saab",("900",(1980,"jan")),(2,true,65.3))gt
    ("Saab",("900",(1980,"jan")),(2,true,65.3000))
    string (string (int string)) (int
    bool real)

19
Tuppler, kartesisk produkt
  • En kartesisk produkt är en sammanslagning av två
    typer A och B, sammanslagningen bildar en ny typ
    A B.
  • Ett värde i den kartesiska produkten är ett par
    av två värden sådant att första värde kommer från
    A och andra värde kommer från B.
  • Typen A B är alla sådana par.
  • Antalet värden som finns i typen är
  • (antalet värden i A) (antalet värden i B)
  • Där av namnet produkt

20
Tuppler, generell form
  • (uttryck1,uttryck2,,uttryckn)
  • med typernauttryck1 typ1uttryck2
    typ2...uttryckn typn
  • Ger tupeln typen
  • typ1 typ2 typn

21
Funktionstyp
  • En funktion har ett antal namngivna
    abstraktionspunkter.
  • Dessa kallas formella parametrar eller bundna
    variabler
  • En funktion har typen från en domäntyp (typen hos
    den formella parametern) till ett resultattyp.
  • Skrivs på formen domäntyp -gt resultattyp
  • När funktionen appliceras på ett värde av
    domäntypen så beräknas ett värde av resultattypen.

22
Funktionsapplikation
  • Det värde som funktionen appliceras på kallas
    argument eller aktuell parameter.
  • Funktionsapplikation har formen
  • uttryck1 uttryck2
  • uttryck1 beräknas till en funktion
  • uttryck2 beräknas till värde av domäntypen
  • En funktions applikation är ett uttryck i sig.
  • Vissa funktioner som appliceras på två argument
    skriv mellan argumenten
  • uttryck1 operator uttryck2
  • Kallas infix operatorer

23
Funktionskomposition
  • En funktion tar ett funktionsanrop som argument.
  • - sin (sqrt 3.14)gt 0.979826 real
  • sin (sqrt 3.14) gtsin 1.772 gt 0.979826
  • Infixa operatorn o används för funktionskompositio
    n
  • - (sin o sqrt o cos) 0.14gt 0.838811 real
  • (f1 o f2) x f1 (f2 x)

24
Egenskaper hos operatorer
  • Om det finns flera sätt att beräkna ett uttryck
    så är det egenskaperna prioritet och
    associativitet hos operatorerna som avgör i
    vilken ordning de ska beräknas.
  • 3 4 5 / 2
  • Tolkas som 3 ((4 5)/ 2)

25
Prioritet
  • Operatorer har olika prioritet, ju högre
    prioritet desto starkare binder operatorn. har
    högre prioritet än .
  • Det medför att
  • 3 4 5
  • tolkas som
  • 3 (4 5).

26
Prioritetsordningen
  • Högst
  • ()
  • Funktionsanrop,
  • / div mod
  • _at_
  • ltgt lt gt lt gt
  • o
  • Lägst

27
Associativitet
  • Ifall det är samma operator eller de har samma
    prioritet så avgör associativiteten.
  • Dvs vilket håll som går före.
  • Nästan alla operatorer är vänster associativa.
  • Det medför att
  • 3 4 5
  • tolkas som
  • (3 4) 5

28
Kommutativitet
  • Om en operator är kommutativ så spelar det ingen
    roll vilken ordning det är på argumenten.
  • är kommutativ.
  • Det medför att
  • 3 4 4 3.
  • / är inte kommutativ,
  • 3 / 4 ¹ 4 / 3.

29
Överlagring
  • Vissa symboler står för flera operatorer.
  • , - och är definierade för både heltals- och
    flyttalspar.
  • är definierad för både heltal och flyttal.
  • Samma symbol används för flera funktioner.

30
Villkorsuttryck
  • Beräknar inte mer än nödvändigt
  • Andalso
  • uttryck1 andalso uttryck2
  • Om första är falskt blir allt falskt annars blir
    det som andra uttrycket
  • Orelse
  • uttryck1 orelse uttryck2
  • Om första uttrycket är sant så är hela uttrycket
    sant annars som andra uttrycket.
  • If .. then .. else
  • if villkor then om_sant else om_falskt
  • om villkoret är sant är värdet det första
    uttrycket annars det andra

31
Kommentarer
  • Kommentarer skriv mellan ( och ) och ignoreras
    av systemet.
  • - ( detta är en kommentar ) 45
  • gt 45 int

32
Globala deklarationer
  • För att ge namn åt ett värde
  • - val namn uttryck
  • Systemet evaluerar uttrycket till ett värdet val
    av typen type och associerar namnet med det
    värdet.
  • gt val name val type
  • Namnet kan sedan användas istället för värdet
    överallt i resten av programmet.

33
Exempel
  • - val pay 12000
  • gt val pay 12000 int
  • - val name ("Mats","Ek")
  • gt val name ("Mats","Ek") string string
  • - pay
  • gt 12000 int
  • - name
  • gt ("Mats","Ek") string string
  • - val tax pay 33 div 100
  • gt val tax 3960 int
  • - val payslip (name,pay,tax,pay-tax)
  • gt val payslip (("Mats","Ek"),12000,3960,8040)
    (string string) int int int

34
Special namn
  • Reserverade ord
  • Specialbehandlas av ML, kan ej användas till
    annat.
  • Fet stil i exempel.
  • fn fun andalso orelse if then else val
  • Fördefinierade ord
  • Redan definierade funktioner och värden, kan, men
    bör ej, användas.
  • sin cos real floor -

35
Funktioner
  • Funktioner är abstraktioner över uttryck.
  • Den formella parametern ger det namn som används
    för generaliseringen, namnet används sedan i
    funktionskroppen.
  • När en funktion anropas med ett argument beräknas
    funktionskroppen med den formella parametern
    ersatt av värdet av argumentet
  • Att anropa en funktion specialiserar ett
    abstraherat uttryck

36
Funktionsvärden
  • Ett funktionsvärde har formen
  • fn name gt expression
  • Motsvarar
  • replace name in expression
  • name är den formella parametern, den bundna
    variabeln
  • expression är funktionskroppen

37
Funktionstyp
  • fn name gt expression
  • Om name kan associeras med typen type1 och
    expression beräknas till ett värde av typen type2
    då är funktionens typ
  • type1 -gt type2
  • Funktionen är en avbildning från type1 till type2
  • Exempel
  • - fn sum gt sum 33 div 100
  • gt fn int -gt int

38
Funktionsapplikation
  • En funktion appliceras (anropas) på ett argument
  • function_expression argument_expresion
  • Först beräknas function_expression till en
    funktion
  • fn name gt expression med typen
  • type1 -gt type2
  • Därefter beräknas argument_expression till ett
    värde value som måste ha typen type1
  • Till sist beräknas expression med alla
    förekomster av name utbytta mot value det ger ett
    resultat med typen type2.

39
Exempel
  • - (fn sum gt sum 33 div 100) 1000
  • gt 330 int
  • (fn sum gt sum 33 div 100) 1000 gt
  • 1000 33 div 100 gt
  • 33000 div 100 gt
  • 330
  • - fn word gt word"s"
  • gt fn string -gt string
  • - (fn word gt word"s") ("fish""cake")
  • gt "fishcakes" string
  • (fn word gt word"s") ("fish""cake") gt
  • (fn word gt word"s") ("fishcake") gt
  • "fishcake""s" gt
  • "fishcakes"

40
Namngivning av funktioner
  • Globala deklarationer kan ge namn åt funktioner
  • - val name function
  • Då ger systemet namnet och funktionens typ som
    svar
  • gt val name fn type

41
Exempel
  • - val tax fn sum gt sum 33 div 100
  • gt val tax fn int -gt int
  • - val plural fn word gt word "s"
  • gt val plural fn string -gt string
  • - tax 1000
  • gt 330 int
  • - plural ("fish""cake")
  • gt "fishcakes" string

42
Use
  • Om programmet inte skrivs in direkt vid prompten
    så kan den lagras i en fil och läsas in till
    system med kommandot use.
  • - use "myfile.ml"
  • - use "F/mittbibl/minfil.ml"
  • - use "//peppar/olof/mittbib/minfil.ml"
Write a Comment
User Comments (0)
About PowerShow.com