Avatar billede wampiro-uha Nybegynder
13. december 2003 - 21:04 Der er 8 kommentarer og
1 løsning

Undgå pattern matching is not exhaustive, hvordan?

Hvordan undgår jeg:

pattern matching is not exhaustive

på sådan en erklæring af en variabel i en let ... in ... end funktion i SML:

val [x,y,z] = i
Avatar billede conrad Nybegynder
13. december 2003 - 21:40 #1
kan du vise lidt mere kode?
Avatar billede wampiro-uha Nybegynder
13. december 2003 - 22:41 #2
f.eks:

fun regnestykke(x,y) = let val [x1,y1,z1] = x : real list
                          val [x2,y2,z2] = y
                          val z = [x1-(x2-x1),y1-(y2-y1),z1-(z2-z1)]
                        in [[x2-x1,y2-y1,z2-z1],z]
                        end;
Avatar billede conrad Nybegynder
14. december 2003 - 18:16 #3
er det fordi du ikke tager højde for nil/empty list ?
Avatar billede wampiro-uha Nybegynder
14. december 2003 - 20:47 #4
det kan godt være, men hvordan gør jeg det i en variabel.

med en funktion skriver jeg jo bare

fun test [] = []
  | test [x1,x2] = ....

men jeg kan jo ikke skrive val [x1,x2] = ...
                            | [] = []
Avatar billede conrad Nybegynder
15. december 2003 - 10:27 #5
jeg tænker på din regnestykke funktion, men det er måske kun et uddrag af den
Avatar billede wampiro-uha Nybegynder
15. december 2003 - 17:59 #6
Nej, det er ikke kun et uddrag.

Men den melder fejlen ved val [x1,y1,zy] = ...
Avatar billede conrad Nybegynder
15. december 2003 - 20:15 #7
Skal lige sige at det er noget tid siden jeg har arbejdet med SML, men kan det være årsagen:

let val [x1,y1,z1] = x kræver vel at x har 3 elementer ? Hvad hvis det ikke er tilfældet?
(Jeg mener også du kan specificere en liste på præcis tre elementer som x1::y1::z1 )
Avatar billede wampiro-uha Nybegynder
17. december 2003 - 15:41 #8
Jeg ved godt at problemet ligger i hvis det ikke er tilfældet at der er tre elementer i en liste.

Det er bare hvordan jeg tjekker for det?
Avatar billede wampiro-uha Nybegynder
18. december 2003 - 00:46 #9
Nå!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester