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.
Questo è il codice che ho trovato da qualche parte, ma voglio sapere come funziona: findIndices :: (a -> Bool) -> [a] -> [Int] findIndices _ [] = [] findIndices pred xs = map fst (filter (pred . snd) (zip [0..] xs)) Output: findIndices (== 0) [1,2,0,3,0]==[2,4] , dove predè …
Perché GHCi fornisce una risposta errata di seguito? GHCi λ> ((-20.24373193905347)^12)^2 - ((-20.24373193905347)^24) 4.503599627370496e15 python3 >>> ((-20.24373193905347)**12)**2 - ((-20.24373193905347)**24) 0.0 AGGIORNAMENTO Vorrei implementare la funzione di Haskell (^) come segue. powerXY :: Double -> Int -> Double powerXY x 0 = 1 powerXY x y | y < 0 = …
Proprio come dice il titolo: quali garanzie ci sono per una unità di ritorno della funzione Haskell da valutare? Si potrebbe pensare che non sia necessario eseguire alcun tipo di valutazione in tal caso, il compilatore potrebbe sostituire tutte queste chiamate con un ()valore immediato a meno che non siano …
Poiché la monade dello Stato può essere scomposta in Prodotto (Sinistra - Funzione) e Lettore (Destra - Rappresentabile). C'è un modo per fattorizzare la Monade della continuazione? Di seguito il codice è il mio tentativo, che non digitare check -- To form a -> (a -> k) -> k {-# …
Sto scrivendo un pacchetto di disegno con alcune parti e ho operatori e tipi di dati sparsi in tutto. Tuttavia, non voglio che gli utenti aggiungano i moduli corrispondenti ogni volta, poiché sarebbe piuttosto disordinato, ad esempio avrei una Pointclasse, un Monoidruolo e una Styleclasse in percorsi diversi come questo …
Ho un tipo Id ae sto cercando di prevenire la coercizione accidentale, ad esempio, da an Id Doublea an Id Int. Se capisco correttamente i ruoli di tipo, non dovrebbe essere compilato quanto segue. {-# LANGUAGE RoleAnnotations #-} import Data.Coerce (coerce) type role Id nominal newtype Id a = Id …
Sto cercando di creare una funzione F # che restituirà la somma di un elenco di ints di nidificazione arbitraria. Vale a dire. funzionerà per a list<int>, a list<list<int>>e a list<list<list<list<list<list<int>>>>>>. In Haskell scriverei qualcosa del tipo: class HasSum a where getSum :: a -> Integer instance HasSum Integer where …
Sto cercando di capire i tipi esistenziali in Haskell e ho trovato un PDF http://www.ii.uni.wroc.pl/~dabi/courses/ZPF15/rlasocha/prezentacja.pdf Per favore, correggi le mie intese che ho fino ad ora. I tipi esistenziali non sembrano essere interessati al tipo che contengono, ma i pattern corrispondenti ad essi dicono che esiste un tipo che non …
Con vincoli quantificati posso derivare Eq (A f)bene? Tuttavia, quando provo a derivare Ord (A f), fallisce. Non capisco come usare vincoli quantificati quando la classe di vincolo ha una superclasse. Come posso derivare Ord (A f)e altre classi che hanno superclassi? > newtype A f = A (f Int) …
Sto vedendo un comportamento molto strano in cui la bracketfunzione di Haskell si sta comportando in modo diverso a seconda che venga utilizzata stack runo meno stack test. Si consideri il codice seguente, in cui vengono utilizzate due parentesi nidificate per creare e pulire i contenitori Docker: module Main where …
Di recente mi sono imbattuto in situazioni in cui ho bisogno di passare una funzione predicata in un'altra funzione, e molto spesso la logica che sto cercando è essenzialmente "questo valore corrisponde a questo modello?" La corrispondenza dei modelli sembra essere preferita nelle dichiarazioni, nei doblocchi e nelle comprensioni di …
Un bel fatto vero sulla concatenazione è che se conosco due variabili nell'equazione: a ++ b = c Allora conosco il terzo. Vorrei catturare questa idea nel mio concat così uso una dipendenza funzionale. {-# Language DataKinds, GADTs, FlexibleContexts, FlexibleInstances, FunctionalDependencies, KindSignatures, PolyKinds, TypeOperators, UndecidableInstances #-} import Data.Kind (Type) class …
Di recente, ho iniziato a studiare Haskell perché volevo ampliare le mie conoscenze sulla programmazione funzionale e devo dire che finora lo adoro davvero. La risorsa che sto attualmente utilizzando è il corso "Haskell Fundamentals Part 1" su Pluralsight. Sfortunatamente ho qualche difficoltà a capire una particolare citazione del docente …
Di seguito sono riportate 3 funzioni che trovano l'ultimo ma il secondo elemento in un elenco. Quello che usa last . initsembra molto più veloce del resto. Non riesco a capire perché. Per i test, ho usato un elenco di input di [1..100000000](100 milioni). L'ultimo funziona quasi istantaneamente mentre gli …
Attualmente ho a che fare con una funzione che va così: foo = (\(a:b:c:d:e:f:_) -> foobar a b c d e f) . (++ repeat def) In altre parole, dato un elenco, utilizza i primi sei elementi per qualcosa e, se l'elenco è lungo meno di sei elementi, utilizza defcome …
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.