Quasi stile senza punti

0

I programmatori parlano spesso di stile senza punti. In contrasto con lo stile imperativo (pseudocodice):

h := function(x) {
  y := f(x)
  z := g(y)
  return z;
}

si potrebbe scrivere il seguente point-free :

h := f . g

dove . è composizione e l'argomento è ora implicito. Mi chiedo se c'è un nome per

h := function(x) {
  return g(f(x))
}

o

h := x -> g(f(x))

dove non ci sono assegnazioni, solo una serie di chiamate di funzione. (Potrebbero essere più complessi della semplice composizione, anche se, come h := x -> g(f(x), q(r(x), 1), x) .) Gli unici punti sono gli argomenti stessi, non ci sono intermediari e l'intera funzione è essenzialmente un'istruzione di ritorno.

Sembra che questo sia correlato ma non identico alla programmazione funzionale. Come si chiama? Ci sono riferimenti che parlano di questo (come ci sono per la programmazione funzionale e senza punti)? So che è popolare in alcune lingue più di altri.

    
posta Charles 12.05.2016 - 17:55
fonte

2 risposte

0

Nella terminologia del calcolo lambda, la relazione tra f e \x -> f(x) è chiamata eta equivalenza . Con lo stesso ragionamento, f . g = \x -> (f . g)(x) = \x -> f(g(x)) potrebbe essere chiamato "praticamente" eta equivalente, se in linea il passo intermedio dell'applicazione della composizione della funzione (.) .

    
risposta data 13.05.2016 - 21:46
fonte
4

È solo un'espressione o, più specificamente, un'espressione lambda . A causa della trasparenza referenziale, è possibile sostituire il corpo di una funzione o il suo risultato ovunque venga chiamato. Se lo facessi davvero per un intero programma, vedresti che ogni programma funzionale è effettivamente una singola grande espressione come i tuoi esempi. Utilizziamo solo molta sintassi per dividerlo e renderlo più modulare e facile da leggere e gestire.

    
risposta data 12.05.2016 - 19:30
fonte

Leggi altre domande sui tag