La programmazione funzionale è un paradigma di programmazione basato sulla costruzione di astrazioni utilizzando funzioni, evitando effetti collaterali e cambio di stato. La pura programmazione funzionale è thread-safe.
A me sembra che puoi sempre passare argomenti di funzione piuttosto che usare una typeclass. Ad esempio, anziché definire la tabella dei tipi di uguaglianza: class Eq a where (==) :: a -> a -> Bool E usarlo in altre funzioni per indicare l'argomento type deve essere un'istanza di Eq: …
Questa domanda è una domanda teorica sulle funzioni di Haskell che può accettare argomenti di qualsiasi tipo. C'è una differenza tra il modo in cui funziona con le firme dei tipi di a -> b -> a e c -> a -> c sono istanziati? Qualsiasi aiuto è apprezzato.
Molti tipi di ottica hanno una rappresentazione di Van Laarhoven. Ad esempio, un Lenstipo Lens s t a b può essere rappresentato come: Functor f => (a -> f b) -> s -> f t Allo stesso modo a Traversal, può essere rappresentato in modo simile, scambiando il Functorvincolo per …
Real World Haskell, capitolo 4, pagina 98 della stampa chiede se wordspuò essere implementato usando le pieghe, e anche questa è la mia domanda: È possibile? Se no, perché? Se lo è, come? Ho trovato quanto segue, che si basa sull'idea che ogni non spazio dovrebbe essere anteposto all'ultima parola …
Ecco un pezzo di codice dalla documentazione per fs2 . La funzione goè ricorsiva. La domanda è: come facciamo a sapere se è stack sicuro e come ragionare se qualche funzione è stack sicuro? import fs2._ // import fs2._ def tk[F[_],O](n: Long): Pipe[F,O,O] = { def go(s: Stream[F,O], n: Long): …
Per la pulizia di un elenco di dati, ho creato un metodo che accetta l'elenco di dati e l'elenco delle operazioni di pulizia da eseguire. public <T> List<T> cleanData(List<T> data, List<Function<T, T>> cleanOps) { List<T>dataNew=data.stream().map((str) -> { T cleanData = str; for(Function<T,T> function:cleanOps) { cleanData=function.apply(cleanData); } return cleanData; }).collect(Collectors.toList()); return …
Sto leggendo il libro programmando in scala, e si dice: ... in questo caso, il suo effetto collaterale è la stampa sul flusso di output standard. e non vedo dove sia l'effetto collaterale, poiché, per lo stesso input, println stamperà lo stesso output (penso) AGGIORNAMENTO ad esempio ogni volta che …
Ho una funzione in stile ES6 che è definita usando la composizione della funzione con asyncPipe. import { getItemAsync } from 'expo-secure-store'; const asyncPipe = (...fns) => x => fns.reduce(async (y, f) => f(await y), x); const getToken = () => getItemAsync('token'); const liftedGetToken = async ({ ...rest }) => …
Mi sono imbattuto in alcune cose irritanti. So che haskell funziona con la forma normale della testa debole (WHNF) e so di cosa si tratta. Digitando il seguente codice in ghci (sto usando il comando: sprint che riduce l'espressione a WHNF a mia conoscenza.): let intlist = [[1,2],[2,3]] :sprint intlist …
Abbiamo un POJO che viene generato automaticamente con ~ 60 proprietà. Questo è generato con avro 1.4, che non include getter / setter. Una libreria che utilizziamo per fornire semplici trasformazioni tra oggetti richiede metodi simili a getter / setter per funzionare correttamente. Esiste un modo per replicare getter / …
Sono davvero alle prese con la comprensione di callCC. Ottengo il potere di Continuations e ho usato il concetto in alcuni dei miei progetti per creare concetti interessanti. Ma non ho mai avuto bisogno di usare qualcosa con capacità maggiori di cont :: ((a->r)->r)-> Cont r a. Dopo averlo usato, …
Quando si utilizza un ambiente funzionale come Scala e cats-effect, la costruzione di oggetti con stato deve essere modellata con un tipo di effetto? // not a value/case class class Service(s: name) def withoutEffect(name: String): Service = new Service(name) def withEffect[F: Sync](name: String): F[Service] = F.delay { new Service(name) } …
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.