La programmazione funzionale è un paradigma di programmazione che utilizza principalmente le funzioni come mezzo per costruire astrazioni ed esprimere calcoli che comprendono un programma per computer.
Sto imparando Haskell e sono affascinato dalla lingua. Tuttavia non ho alcuna seria matematica o background CS. Ma sono un programmatore di software esperto. Voglio imparare la teoria delle categorie in modo da poter diventare migliore in Haskell. Quali argomenti nella teoria delle categorie dovrei imparare a fornire una buona …
Qualcuno potrebbe spiegare la differenza tra tipi dipendenti e tipi di perfezionamento? A quanto ho capito, un tipo di perfezionamento contiene tutti i valori di un tipo che soddisfano un predicato. Esiste una caratteristica di tipi dipendenti che li distingue? Se aiuta, mi sono imbattuto in tipi raffinati tramite il …
La complessità dell'algoritmo è progettata per essere indipendente dai dettagli di livello inferiore, ma si basa su un modello imperativo, ad esempio l'accesso alla matrice e la modifica di un nodo in un albero impiega il tempo O (1). Questo non è il caso di linguaggi puramente funzionali. L'elenco di …
Se qualcosa è semplice, allora dovrebbe essere completamente spiegabile con poche parole. Questo può essere fatto per il calcolo λ: Il calcolo λ è una grammatica sintattica (fondamentalmente una struttura) con una regola di riduzione (il che significa che una procedura di ricerca / sostituzione viene ripetutamente applicata ad ogni …
FRP riguarda eventi e comportamenti in streaming attraverso funzioni pure. Il modello Actor - almeno, come implementato in Akka - riguarda lo streaming di messaggi immutabili (che possono essere considerati eventi discreti) attraverso oggetti potenzialmente impuri, chiamati attori. Quindi in superficie sembrano collegati. Cos'altro possiamo dire su come si relazionavano? …
Ho letto alcune settimane sul Calcolo Lambda, ma non ho ancora visto nulla di materialmente distinto dalle funzioni matematiche esistenti e voglio sapere se è solo una questione di notazione o se ci sono nuove proprietà o regole create dagli assiomi del calcolo lambda che non si applicano ad ogni …
Esiste un chiaro riferimento, con pseudo-codice, su come implementare un interprete Prolog in un linguaggio puramente funzionale? Ciò che ho trovato finora sembra avere a che fare solo con linguaggi imperativi, è semplicemente una dimostrazione di Prolog implementato in sé o non offre alcun algoritmo concreto da utilizzare per l'interpretazione. …
Lungo lo stesso pensiero di questa affermazione di Andrej Bauer in questa risposta La comunità di Haskell ha sviluppato una serie di tecniche ispirate alla teoria delle categorie, di cui le monadi sono più conosciute ma non devono essere confuse con le monadi . Qual è la relazione tra funtori …
Questa domanda è stata migrata da StackTranslate.it perché è possibile rispondere a Scambio stack di Informatica. Migrato 5 anni fa . Sto ancora imparando la programmazione funzionale (con f #) e di recente ho iniziato a leggere le espressioni di calcolo. Continuo a non comprendere appieno il concetto e una …
Nel leggere la risposta di Uday Reddy a Qual è la relazione tra i funzionari nella teoria SML e della categoria? Stati Uday La teoria delle categorie non sa ancora come gestire le funzioni di ordine superiore. Un giorno lo farà. Poiché pensavo che la teoria delle categorie potesse servire …
La programmazione funzionale impiega strutture di dati persistenti e oggetti immutabili. La mia domanda è: perché è fondamentale disporre di tali strutture di dati qui? Voglio capire a basso livello cosa accadrebbe se la struttura dei dati non fosse persistente? Il programma andrebbe in crash più spesso?
Dopo aver appreso Haskell e altri linguaggi FP non altrettanto puri, ho deciso di leggere la teoria delle categorie. Dopo aver acquisito una buona conoscenza della teoria delle categorie, ho iniziato a pensare a come i concetti della teoria delle categorie possano essere usati per pensare alla progettazione di programmi, …
Questa domanda è stata migrata dallo Scambio teorico di stack di informatica perché è possibile rispondere a Scambio stack di informatica. Migrato 7 anni fa . Sono uno studente universitario e attualmente stiamo studiando Lambda Calculus. Tuttavia, faccio ancora fatica a capire esattamente perché questo mi sia utile. Mi rendo …
Gli alberi dinamici svolgono un ruolo importante nella risoluzione di problemi quali flussi di rete, grafici dinamici, problemi combinatori ("Alberi dinamici in pratica" di Tarjan e Werneck) e la recente fusione di dizionari ("A Simple Mergeable Dictionary" di Adam Karczmarz), Per alberi dinamici mi riferisco alla definizione dichiarata nel documento …
Stavo guardando la conferenza di Jim Weirich, intitolata " Avventure nella programmazione funzionale ". In questa lezione, introduce il concetto di Y-combinatori, che trova essenzialmente il punto fisso per le funzioni di ordine superiore. Una delle motivazioni, secondo lui, è quella di poter esprimere funzioni ricorsive usando il calcolo lambda …
Le strutture di dati persistenti sono strutture di dati immutabili. Le operazioni su di essi restituiscono una nuova "copia" della struttura dei dati, ma modificata dall'operazione; la vecchia struttura di dati rimane tuttavia invariata. L'efficienza si ottiene generalmente condividendo alcuni dei dati sottostanti ed evitando la copia completa della struttura …
Il nostro professore ci ha chiesto di pensare a una funzione in OCaml che ha il tipo 'a -> 'b cioè una funzione di un argomento che potrebbe essere qualsiasi cosa e che può restituire qualsiasi cosa diversa. Ho pensato di usare raiseuna funzione che ignora il suo argomento: let …
Secondo questo articolo la seguente riga di codice Lisp stampa "Hello world" sull'output standard. (format t "hello, world") Lisp, che è un linguaggio omoiconico , può trattare il codice come dati in questo modo: Ora immagina di aver scritto la seguente macro: (defmacro backwards (expr) (reverse expr)) all'indietro è il …
Nell'articolo di Philip Wadler su Teoremi gratuiti afferma nella Sezione 2 su Parametricità che non ci sono ingenui modelli set-teorici di calcolo lambda polimorfico Nell'ingenuo set-modello teorico i tipi sono insiemi e le funzioni sono insiemi di funzioni teoriche che sembrano ragionevoli. Quindi perché dice che non ci sono ingenui …
Di recente sono diventato estremamente interessato a comprendere e dimostrare aspetti dei linguaggi di programmazione (funzionali). Tuttavia, mentre mi tuffo più a fondo, cose come calcolo λ , la teoria delle categorie e la semantica denotazionale sono un po 'difficili da capire senza una spiegazione adeguata.λλ\lambda Ho letto SICP (un …
Le CPU sono progettate in una certa misura tenendo presente il software che le persone scriveranno per questo, implicitamente o esplicitamente. Mi sembra che se si guarda alla progettazione di architetture di insiemi di istruzioni, sono molto "imperativi", nel senso che ogni istruzione codifica un comando di stile imperativo. Mi …
Qualcuno può riferirmi ad articoli peer-reviewed che studiano i vantaggi o gli svantaggi della scrittura di codice in uno stile funzionale? Esistono articoli che discutono delle applicazioni del calcolo Lambda in campi come l'apprendimento automatico, il design delle lingue, ecc.?
La programmazione funzionale ha il molto elegante Lambda Calculus e le sue varianti come teoria del backup. Esiste qualcosa del genere per OOP? Che cos'è un'astrazione per il modello orientato agli oggetti?
Ho fatto una domanda simile su cstheory.SE . Secondo questa risposta su Stackoverflow esiste un algoritmo che su un linguaggio di programmazione funzionale puro non pigro ha una complessità , mentre lo stesso algoritmo nella programmazione imperativa è . L'aggiunta di pigrizia al linguaggio FP renderebbe l'algoritmoΩ(nlogn)Ω(nlogn)\Omega(n \log n)Ω(n)Ω(n)\Omega(n)Ω(n)Ω(n)\Omega(n) . …
Ci sono modifiche che potrebbero essere apportate alle CPU per renderle più performanti per i runtime simultanei come Rust? Ad esempio, ci sono modifiche alle implementazioni di previsione delle filiali o alle dimensioni della cache che potrebbero aiutare i runtime simultanei? Ho l'impressione che gli attuali progetti di CPU potrebbero …
Sul wiki di haskell c'è il seguente esempio di uso condizionale della monade IO (vedi qui) . when :: Bool -> IO () -> IO () when condition action world = if condition then action world else ((), world) Si noti che in questo esempio, la definizione di IO aè …
Penso che comprenda come la deforestazione consuma e produce un elenco allo stesso tempo (da una piega e una funzione spiegata - vedi questa buona risposta su CodeReview qui ), ma quando ho confrontato quello con la voce di Wikipedia sulla tecnica ha parlato di "rimozione alberi "da un programma. …
Supponiamo che uno voglia ragionare sulle proprietà del codice al di là di cose come la totalità e la purezza funzionale - ci si preoccupa anche del consumo di memoria o della complessità algoritmica di una funzione. Questo può essere fatto attraverso sistemi di tipizzazione dipendenti ed effetti?
Sto cercando una struttura di dati persistente simile all'array (ma immutabile), che consenta operazioni veloci di indicizzazione, aggiunta, prepend e iterazione (buona località). Clojure fornisce un vettore persistente, ma è solo per un'aggiunta veloce. Scala's Vector ha effettivamente un'appendice e prepend a tempo costante, ma non riesco a capire come …
In un commento all'apprendimento di F #: quali libri che usano altri linguaggi di programmazione possono essere tradotti in F # per apprendere concetti funzionali? Makarius dichiarò: Si noti che l'approccio "CPS" ha arrecato gravi danni alle prestazioni in SML / NJ. Il suo modello di valutazione fisica viola troppe …
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.