Ho letto Out of the Tar Pit di Ben Moseley e Peter Marks e nella sezione 5.2.3 discutono lo stato in lingue funzionali rispetto ai linguaggi procedurali. L'esempio procedurale è il seguente:
procedure int getNextCounter()
// 'counter' is declared and initialized elsewhere in the code
counter := counter + 1
return counter
Posso vedere che c'è uno stato interno, quindi va bene. L'esempio funzionale è tuttavia il seguente:
function (int,int) getNextCounter(int oldCounter)
let int result = oldCounter + 1
let int newCounter = oldCounter + 1
return (newCounter, result)
Posso capire che si evita lo stato interno passando in oldCounter
, ma perché i due output uguali?
Questo è solo per passare il state
e il result
ed essere entrambi uguali è semplicemente dovuto ad un esempio troppo semplicistico?
Non viene restituito più valori considerati non buoni per un'idea?
Non sono abbastanza esperto nella programmazione funzionale?