Avatar billede wampiro-uha Nybegynder
06. december 2003 - 18:39 Der er 10 kommentarer og
1 løsning

Fix en funktion!

Jeg har denne SML-funktion:

fun listFromString x = let val y = explode x
                          fun remove [] = []
                            | remove(z :: zs) = if z = #"[" then remove zs else z :: remove zs
                          fun createlists [] = []
                            | createlists(q :: qs) = if q <> #"]" then q :: createlists qs else createlists qs
                          fun last_step [] = []
                            | last_step(w :: ws) = (implode w) :: last_step ws
                      in last_step(createlists(remove x))
                      end;

Men får denne fejl:
! Type clash: expression of type
!  char list
! cannot have type
!  char list list

Det den skal er at lave dette om:
"[lars,19,dreng][pia,21,pige][torben,19,dreng]"
om til dette:
["lars,19,dreng","pia,21,pige","torben,19,dreng"]

Hvordan fixer jeg den?
Avatar billede jakoba Nybegynder
06. december 2003 - 18:54 #1
din linie
                          fun remove [] = []
giver ikke mening.
Det ligner noget pseudo-kode linie du har fået udleveret, og spm du så skal skrive selv så den udfører en 'remove' funktion på en liste der gives som input.
Avatar billede wampiro-uha Nybegynder
06. december 2003 - 19:01 #2
? Hvordan skal jeg så rette det?
Avatar billede wampiro-uha Nybegynder
06. december 2003 - 19:02 #3
Jeg skal vel fjerne ] og [, så jeg kan tage de elementer ud som skal være i den endelige liste.
Avatar billede wampiro-uha Nybegynder
06. december 2003 - 19:25 #4
Ok, er der ingen der ved det?
Avatar billede wampiro-uha Nybegynder
06. december 2003 - 19:26 #5
Please svar. Så er jeg færdig for i dag!
Avatar billede jakoba Nybegynder
06. december 2003 - 19:54 #6
Du fik jo ikke et svar så det skal der ikke 'betales' for.
Hvis du ikke vil vente, så læg et svar selv og accepter det.

mvh JakobA
Avatar billede wampiro-uha Nybegynder
06. december 2003 - 20:02 #7
Nå :-)
Nej, jeg tænker på koden redigeret så den virker?
Jeg har prøvet at arbejde (rode) med funktionen remove osv. men kan stadig ikke få det til at virke =D
Avatar billede wampiro-uha Nybegynder
06. december 2003 - 20:16 #8
Der er ingen der lige kan smække koden op for den funktion som laver dette:
"[lars,19,dreng][pia,21,pige][torben,19,dreng]"
om til dette:
["lars,19,dreng","pia,21,pige","torben,19,dreng"]

Jeg har siddet siden kl. 9 i morges konstant og kodet. Og dette er den sidste funktion som jeg mangler i dag.

PLEASE svar! :-)
Avatar billede wampiro-uha Nybegynder
06. december 2003 - 20:39 #9
Er det fordi I ikke kan eller ikke gider?
Bare så jeg ved om jeg skal vente på et svar eller bare glemme det :-(
Avatar billede wampiro-uha Nybegynder
07. december 2003 - 00:44 #10
Nå!
Avatar billede x-masman Nybegynder
07. december 2003 - 12:27 #11
Ok. Du vil altid kunne få hjælp her på eksperten, hvis du følger reglerne og taler ordentlig til folk. Derudover er den generelle indstilling her på eksperten, at man skal hjælpe folk så de selv kan lære, og ikke at man løser en opgave sådan uden videre.

Jeg vil sige, at det første du skal kigge på er dine typer. Du har vist ikke helt styr på hvad, der er en string og hvad der er en list. Umiddelbart virker det som om at du vil tage en liste af lister ind, men du skriver det som en string.
For det andet kan du ikke erklære en funktion inde i en funktion på den måde du gør. Den skal enten erklæres som en let val eller erklæres uden for den ande funktion og så bruges i den funktion du vil kode.

Men først og fremmest skal du have styr på, hvad din funktion skal tage ind og hvad den skal returnere. Er det ikke også meningen at den skal returnere en liste af lister med strings?
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