Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-11-2005, 19:08   #1
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
[caml] ritornare elemento inesistente

devo creare una funzione che prenda una lista e mi restituisca in una coppia l'ultimo elemento e la lista senza l'ultimo elemento.

la prima soluzione che ho scritto è questa:

Codice:
let rec tail = function(l) -> (tuttaMenoUna(l),ultimo(l));;

let rec tuttaMenoUna = function [] -> []
  |a::[] -> []
  |a::b -> a::tuttaMenoUna(b);;

let rec ultimo = function a::[] -> a
  |a::b -> ultimo(b)
a parte il fatto che si passa due volte la lista per risolvere il problema, c'è un problema ben più grave:
come segnala i compilatore il caso di un parametro lista vuota non è gestito, ed effettivamente in quel caso tira fuori cose senza alcun senso.

potrei mettere un caso vuoto che restituisce la coppia lista vuota e un valore a babbo (si era pensato a nan), ma in questo modo la funzione non prende più una a' list, ma una list di tipo ben fissato....
posso in qualche modo restituire un valore senza utilizzare eccezzioni o cose simili, e sopratutto senza andare a fissare il tipo della lista?

già che ci sono un'altra domanda, qualcuno sa in che campo è usato questo linguaggio (sempre che sia usato )?

ciao!
NA01 è offline   Rispondi citando il messaggio o parte di esso
Old 29-11-2005, 10:50   #2
NA01
Senior Member
 
L'Avatar di NA01
 
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
upete!
NA01 è offline   Rispondi citando il messaggio o parte di esso
Old 01-12-2005, 01:01   #3
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Non posso darti una soluzione in ocaml perche' non lo conosco.
Essendo un dialetto ML, dovrebbe avere pero' una struttura dati simile alla option di SML, che funziona al seguente modo: un dato di tipo 'a option' puo' valere NONE , oppure SOME x , con x di tipo 'a.
Nel tuo caso quindi dovresti cambiare la funzione in modo che ritorni "SOME x" in caso la lista sia non vuota, e NONE altrimenti.
In alternativa puoi usare un'altra lista, che sara' vuota nel caso la lista originale sia vuota, e sia invece una lista di un solo elemento altrimenti.
Per evitare la doppia scansione puoi "spezzare" il risultato della chiamata ricorsiva, ritornando sempre l'eventuale valore ritornato, e usando la lista parziale per ricostruire la finale.
Ti mostro un esempio con notazione Haskell, che pero' dovresti riuscire a capire comunque:
Codice:
tail :: [a] -> ([a],[a])

tail [] = ([],[])
tail [x] = ([],[x])
tail (x:xs) 
  = let
      (testa,coda) = tail xs
    in
      (x:testa,coda)
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Amazon sconta schede video, CPU e access...
Halo: Campaign Evolved, l'uscita del rem...
La rete elettrica europea sta limitando ...
Apple Magic Keyboard per iPad Pro 11'' i...
BYD punta a nuove tecnologie: batterie a...
Windows 11 porta il Bluetooth multi-disp...
iPhone 17e e non solo: Gurman svela le c...
Arrestato per omicidio, in lacrime ai po...
Vexilar, scopa elettrica da 65000Pa, 4,9...
Linux 7.0 sarà la prossima versio...
Windows 11: Copilot AI entra anche nella...
Apple apre CarPlay ai chatbot di terze p...
Horses: Santa Ragione afferma di essere ...
Nuova causa contro Tesla e maniglie elet...
MindsEye, il CEO accusa: 'Speso un milio...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:58.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v