|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2007
Messaggi: 33
|
[Haskell]WinHugs compilare un file.hs
salve a tutti
sto cercando di compilare un file myreverse.hs con WinHugs il codice nel file è myreverse [] = [] myreverse (x:xs) = myreverse(xs) ++ una volta caricato il file come faccio ad eseguirlo e a passare la lista???con quale sintassi???? grazie apresto |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2008
Messaggi: 382
|
qua il codice funzionante:
Codice:
myreverse :: [Int] -> [Int] myreverse [] = [] myreverse (x:xs) = (myreverse xs) ++ [x] una volta che l'ha caricato senza darti errori, puoi chiamare la funzione presente nel programma con la stessa sintassi con cui l'hai definito Codice:
Main> myreverse [3,4,1,5,6] [6,5,1,4,3] p.s.: occhio alla notazione Curry!!! ( es: f(x,y,z) si scrive f x y z ) |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2007
Messaggi: 33
|
ok tutto chiaro!!!
l' ultimo dubbio: se voglio confrontare 2 liste creandone una in uscita con gli elementi in comune?? Ho scritto questo codice ma confronta solo il primo elemento della prima con tutti quelli della seconda;come faccio a far ripartire il tutto passando il secondo della prima lista ...cosi via??? Codice:
liste[][]=[] liste (x:xs)(y:ys)= duplic(x:xs,y:ys,x) duplic(x:xs,y:ys,n) = if(y == n) then y : dup(xs,ys,n) else duplic(xs,ys,n) duplic([],[],n) = [] |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2008
Messaggi: 382
|
io userei la funzione predefinita nel prelude elem per sapere se un elemento è presente in una lista o meno
ho basato la ricorsione sulla prima lista Codice:
duplic :: [Int] -> [Int] -> [Int] duplic [] _ = [] duplic (x:xs) ys = if (elem x ys) then (x : duplic xs ys) else duplic xs ys |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:42.