Interessante presa di posizione sull'OLP - pagina 12

 
fxsaber:

Capisco che è una questione di abitudine e di conoscenza della sintassi, ma trovo molto difficile entrare nel codice, anche se sono l'autore dell'originale.

Purtroppo non posso usare MQL in stile FP. In breve, si sfrutta il seguente approccio: ci sono condizioni di offerta (PammSet) e ci sono funzioni che convertono le condizioni in risultati finanziari (AccountRecord). Entrambi i tipi sono invarianti e impostati alla creazione. Il compito è generare un insieme di offerte e confrontare ogni elemento di questo insieme con il risultato finanziario attraverso la funzione di mappatura (Set1, Set2, Set3). L'elemento chiave è la funzione SELECT che applica una funzione arbitraria come Func<in, out> ad ogni elemento della sequenza.

 

Jacques Fresco su FP e OLP


 
E in che modo questo FP è fondamentalmente diverso dall'uso dei puntatori di funzione?
 
Dmitry Fedoseev:
E in che modo è fondamentalmente diverso dall'usare puntatori a funzioni?

lo è, è solo che la sintassi FP è più conveniente.

così conveniente che l'intera architettura del codice è basata su di esso

per esempio, si potrebbe creare un blocco che riceverà un compito che verrà eseguito quando il mouse viene cliccato .... per esempio per la GUI.

e lì potete raggruppare le chiamate in una lista e aggiungere il lavoro da eseguire molto semplicemente

esempio

Button1.MouseClickAdd(() => (ecco un link alla nostra funzione nello stile di Funk();))

in questo caso, tale impostazione, cioè il compito, può essere aggiunto dall'utente, che utilizza il codice della nostra barra degli strumenti per configurare le sue azioni sui pulsanti....

in questo caso, il binding della funzione sarà preso dall'ambito. cioè una classe può essere aggiunta a qualsiasi cosa. Quindi, non stiamo aggiungendo il risultato finale della funzione, ma la funzione da eseguire (chiamata) quando si verifica questa condizione.

 
Dmitry Fedoseev:
E in che modo questo FP è fondamentalmente diverso dall'uso dei puntatori di funzione?

La FP è un'implementazione del lambda-calculus, e la programmazione imperativa (che include OOP) è un'implementazione della macchina di Turing.

 
Aleksey Nikolayev:

La FP è un'implementazione del lambda-calculus, e la programmazione imperativa (che include OOP) è un'implementazione della macchina di Turing.

Ha senso)

 

Credo che stiamo discutendo di "mosche e cotolette".

Se FP è un fantastico sostituto di OOP, mostratemi un esempio di GUI implementato in FP, non l'esempio di cui sopra

Кнопка1.MouseClickAdd(()=>(тут ссылка на нашу функцию в стиле Funk();))

ma un esempio di pulsanti, caselle di controllo, barre di scorrimento, ecc. - tutti realizzati in FP.


imho, se FP aiuta a semplificare la formalizzazione e il problem solving, in modo da non creare la dipendenza diC++ sull'esecuzione lineare del codice (dall'alto al basso) - bene! ma discutere che FP è un'alternativa a OOP (che è cresciuto dallo stile procedurale), imho un altro confronto di caldo e freddo

 
Igor Makanu:

Credo che stiamo discutendo di "mosche e cotolette".

Se FP è un fantastico sostituto di OOP, mostratemi un esempio di GUI implementato in FP, non l'esempio di cui sopra

ma un esempio di pulsanti, caselle di controllo, barre di scorrimento, ecc. - tutti realizzati in FP.


imho, se FP aiuta a semplificare la formalizzazione e la risoluzione dei problemi, in modo da non creare la dipendenza diC++ sull'esecuzione lineare del codice (dall'alto al basso) - bene! ma discutere che FP è un'alternativa a OOP (che è cresciuto da uno stile procedurale), imho un altro confronto tra caldo e morbido.

Qui esattamente uno non impedisce l'altro, ma lo completa.

E se volete, potete anche creare tutto in FP come in OOP con la struttura di Tyke - anche se è un compito molto dubbio
 
Alexandr Andreev:

Qui l'uno non interferisce con l'altro, ma lo completa.

è di questo che sto scrivendo

e l'articolo del primo post del thread, cerca di confrontare due paradigmi di programmazione completamente diversi, in termini di scopo

 
Aleksey Nikolayev:

La FP è un'implementazione del lambda-calculus, e la programmazione imperativa (che include OOP) è un'implementazione della macchina di Turing.

Esauriente! Non aggiungerei altro ))