Salve,
ho realizzato la struttura di un grafo in haskell per l'università, il problema è che mi viene richiesto di sviluppare anche un algoritmo di visita (e mi è stato caldamente consigliato di sviluppare il dfs) ma non so davvero da dove cominciare.
Fare la struttura è stato abbastanza facile ma per la visita ad ogni passo dell'algoritmo mi blocco, forse perchè l'algoritmo che ho studiato io era orientato ai linguaggi imperativi (i vari marcalo come visitato, come faccio a marcarlo come visitato se non ho variabili?) e non a quelli funzionali.

Il tipo grafo l'ho dichiarato in questa maniera, vi allego anche la "firma" dei metodi realizzati:

codice:
type Nodo = Int
type Arco = (Nodo,Nodo)
type Grafo = ([Nodo],[Arco])

esisteArco :: Arco -> Grafo -> Bool
inserisciArco :: Arco -> Grafo -> Grafo
cancellaArco :: Arco -> Grafo -> Grafo	  
adiacente :: Nodo -> Grafo -> [Nodo]			
esisteNodo :: Nodo -> Grafo -> Bool						 
grafoVuoto :: Grafo -> Bool
voi come la realizzereste la dfs?

Vi ringrazio in anticipo,
Neptune.