E 'meglio usare la monade Stato, o di passare lo stato in modo ricorsivo?
-
12-09-2019 - |
Domanda
Sto imparando Haskell, e cercando di capire il modo più idiomatico per implementare un algoritmo di linea di vista.
Il codice demo ho trovato utilizza la monade stato, ma sembra più semplice per me (io sono solo un principiante) per passare lo stato in modo ricorsivo. Che cosa mi manca qui? Ci sono problemi di prestazioni?
Codice Find a: http://www.finalcog.com/bresenham-algorithm- idiomatica-Haskell
Grazie,
Chris.
Soluzione
Può diventare un po 'prolisso di passare lo stato in tutto il mondo. Inoltre, la monade stato è ben noto dalla maggior parte dei programmatori Haskell così sapranno cosa si sta facendo. Se si mano-roll il proprio, al di fuori una monade, può essere difficile discernere ciò che il codice fa.
Trovo la monade stato ordinato per incapsulare cambiamenti di stato, è abbastanza evidente quale parte del codice è stateful (cioè altera o dipende dallo stato) w.r.t. il resto della roba pura.
Altri suggerimenti
Per i programmi più grandi, è meglio per nascondere lo stato passa impianto idraulico in monade. C'è meno rischio di errore, allora.
Un vantaggio di utilizzare una monade di trasmettere lo stato invece di passare dallo stato esplicitamente, è che ci sono molti combinatori utili definiti per monadi che è possibile utilizzare.