Quando si eseguono azioni IO
in GHCi, viene eseguita automaticamente l'azione e viene visualizzato il risultato, questo è utile, ma non per gli studenti che cercano di capire la differenza tra IO
e non- IO
. C'è un modo per cambiare la configurazione di GHCi in modo che esegua l'azione, ma mostra qualcosa come <<IO Int action>>
invece? Qualcosa di più come risultato di azioni ST (ma dovrebbe essere eseguita l'azione):Disabilitare la stampa dei risultati IO in GHCi?
ora fa:
> return 1 :: IO Int
1
> return 1 :: ST s Int
<<ST action>>
vorrei:
> return 1 :: IO Int
<<IO Int action>>
> putStrLn "bla"
bla
<<IO() action>>
Edit:
- Ho appena scoperto che l'
IO
è probabilmente l'unica cosa gestita appositamente da GHCi,ST
ha effettivamente istanza perShow (ST s a)
che restituisce"<<ST action>>"
. Quindi forse se potessi disabilitare questo trattamento speciale diIO
sarebbe sufficiente. - Come per le modifiche consentite al codice: la modifica manuale dell'espressione valutata non è un'opzione. Il cambiamento nelle librerie potrebbe essere, ma preferirei non farlo (ho preso in considerazione la creazione del tipo
IO
spostato, ma l'interprete non eseguirà l'azione). Se GHCi potesse automaticamente avvolgere azioniIO
in qualche modo, questa sarebbe un'opzione.
Le modifiche al codice sono accettabili? Puoi avvolgere il valore di I/O che hai con un altro che esegue prima il valore e poi stampa qualcosa che ti piace. – usr
usr: non dell'espressione da valutare, vedere le mie modifiche alla domanda. –