Haskell è un linguaggio di programmazione funzionale caratterizzato da una forte tipizzazione statica, valutazione pigra, ampio parallelismo e supporto della concorrenza e capacità di astrazione uniche.
Non riesco a capire perché m1 è apparentemente memoizzato mentre m2 non è nel seguente: m1 = ((filter odd [1..]) !!) m2 n = ((filter odd [1..]) !! n) m1 10000000 impiega circa 1,5 secondi alla prima chiamata, e una frazione di quello alle chiamate successive (presumibilmente memorizza nella cache …
Qual è la classe di caratteri Comonad in Haskell? Come in Comonad da Control.Comonad nel pacchetto comonad (sono benvenute anche spiegazioni di qualsiasi altro pacchetto che fornisce una classe di caratteri Comonad). Ho vagamente sentito parlare di Comonad, ma tutto quello che so veramente è che fornisce extract :: w …
Recentemente ho scoperto che i buchi di tipo combinati con la corrispondenza del modello sulle dimostrazioni forniscono un'esperienza simile a quella di Agda in Haskell. Per esempio: {-# LANGUAGE DataKinds, PolyKinds, TypeFamilies, UndecidableInstances, GADTs, TypeOperators #-} data (==) :: k -> k -> * where Refl :: x == x …
Allo stato attuale, questa domanda non è adatta al nostro formato di domande e risposte. Ci aspettiamo che le risposte siano supportate da fatti, riferimenti o competenze, ma questa domanda probabilmente solleciterà dibattiti, argomenti, sondaggi o discussioni estese. Se ritieni che questa domanda possa essere migliorata e possibilmente riaperta, visita …
Durante la risoluzione di alcuni problemi del progetto Eulero per imparare Haskell (quindi attualmente sono un principiante completo) sono arrivato al problema 12 . Ho scritto questa soluzione (ingenua): --Get Number of Divisors of n numDivs :: Integer -> Integer numDivs n = toInteger $ length [ x | x<-[2.. …
La sicurezza dei tipi di Haskell non è seconda a nessuno solo ai linguaggi tipizzati in modo dipendente. Ma c'è una profonda magia in corso con Text.Printf che sembra piuttosto instabile. > printf "%d\n" 3 3 > printf "%s %f %d" "foo" 3.3 3 foo 3.3 3 Qual è la …
I tipi di dati algebrici (ADT) in Haskell possono diventare automaticamente istanze di alcune classi di tipi (comeShow,Eq) derivando da esse. data Maybe a = Nothing | Just a deriving (Eq, Ord) La mia domanda è: come derivingfunziona, cioè come fa Haskell a sapere come implementare le funzioni della classe …
Ho tre funzioni che trovano l'ennesimo elemento di una lista: nthElement :: [a] -> Int -> Maybe a nthElement [] a = Nothing nthElement (x:xs) a | a <= 0 = Nothing | a == 1 = Just x | a > 1 = nthElement xs (a-1) nthElementIf :: [a] …
Ieri ho saputo di un nuovo strumento Haskell chiamato Stack . Al primo rossore, sembra che faccia più o meno lo stesso lavoro di Cabal. Allora, qual è la differenza tra loro? Stack è un sostituto per Cabal? In quali casi dovrei usare Stack invece di Cabal? Cosa può fare …
Chiuso . Questa domanda deve essere più mirata . Attualmente non accetta risposte. Vuoi migliorare questa domanda? Aggiorna la domanda in modo che si concentri su un problema solo modificando questo post . Chiuso 5 anni fa . Migliora questa domanda I linguaggi funzionali sono buoni perché evitano bug eliminando …
Comportamento attuale Prelude> show _ <interactive>:7:6: Found hole ‘_’ with type: a0 Where: ‘a0’ is an ambiguous type variable Relevant bindings include it :: String (bound at <interactive>:7:1) In the first argument of ‘show’, namely ‘_’ In the expression: show _ In an equation for ‘it’: it = show _ …
map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b Perché abbiamo tre diverse funzioni che fanno essenzialmente la stessa cosa?
Ho appena avviato un nuovo progetto Haskell e volevo impostare un buon flusso di lavoro di test dall'inizio. Sembra che Haskell abbia molti strumenti di test eccellenti e unici e molti modi diversi per integrarli. Ho esaminato: HUnit Controllo veloce panca HPC complessità Tutti sembrano funzionare molto bene nei loro …
In F #, l'uso dell'operatore pipe-forward,, |>è piuttosto comune. Tuttavia, in Haskell ho visto solo la composizione di funzioni,, (.)utilizzata. Capisco che siano correlati , ma c'è una ragione linguistica per cui pipe-forward non viene utilizzato in Haskell o è qualcos'altro?
In linguaggi funzionali puri come Haskell, esiste un algoritmo per ottenere l'inverso di una funzione, (modifica) quando è biiettiva? E c'è un modo specifico per programmare la tua funzione così è?
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.