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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top