|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2011
Messaggi: 672
|
[HASKELL] Aggiungere elemento ad una lista da input
Ciao a tutti!
Mi trovo davanti a questo problema, ipotizziamo di avere una funzione: Codice:
f:: [String] -> [String] Mi sapreste dire come fare? Consideriamo che la stessa funzione è chiamata da un'altra che restituisce il medesimo tipo (una lista di stringhe), dunque il tipo di uscita non è modificabile |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Una qualsias funzione che legga dei dati da input (o li scriva in output) deve far parte dell' IO Monad, quindi deve avere signature del tipo Codice:
a -> IO b Quindi hai tue alternatve. La prima e' quella di cambiare il tipo della funzione in [String] -> IO [String]. In questo caso l'implementazione potrebbe essere qualcosa tipo Codice:
f :: [String] -> IO [String]
f xs = do line <- getLine
return (xs++s)
Allora devi cambiare l'approccio, per cui leggi "tutte le righe" in maniera lazi e poi le passi come argomento alla tua funzione che le usa (la lettura delle righe in pratica verra' fatta "lazy" man mano che i dati vengono usati) Per cosa devi usare l'input ? Cosi' magari riusciamo a fare un esempio pratico.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2011
Messaggi: 672
|
è difficile da spiegare...
In pratica ho una funzione che a seconda di un determinato Patter Matching chiama altre funzioni, ognuna di essere modifica questa lista in un modo diverso. Me ne servirebbe una che la modifica prendendo il valore da input, ma avevo già immaginato che non si potesse fare, volevo solo la conferma! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:18.




















