Non puoi facilmente eliminare qualsiasi problema impostato per non adatto alla programmazione funzionale di per sé.
Molto dipende dalla lingua utilizzata per la programmazione funzionale e le sue caratteristiche.
Un esempio è il già citato Erlang per i sistemi embedded in tempo reale.
Anche la pienezza dello stato non è un buon criterio per la programmazione funzionale, ci sono diversi modi efficaci implementati nei linguaggi di programmazione funzionale per affrontare questo problema.
Gli effetti collaterali sono spesso citati anche rispetto alla programmazione funzionale. Ogni programma che non è totalmente solipsistico ha effetti collaterali. Quindi ogni linguaggio FP del mondo reale ha un modo per affrontarlo, è solo questione di quanto elegantemente incapsulare gli effetti collaterali del mondo.
Non è necessario alcun effetto collaterale arbitrario come le variabili globali.
Ma ci sono serie di problemi che rendono più facile accedere alla programmazione funzionale perché non distorcono il tuo modo familiare di guardare il problema. Ma una volta che riesci a pensare in modo funzionale, sempre più set di problemi sono aperti a meno effetti collaterali.
Anche quando si programma C è sempre una buona idea ridurre gli effetti collaterali arbitrari come le variabili globali il più possibile.