È possibile interrogare il ghci per il tipo che ha inferito per una funzione all'interno di un'altra funzione?Can GHCi può dirmi il tipo di una funzione Haskell locale?
risposta
Si potrebbe provare a farlo impostando un punto di interruzione su di esso, quindi la funzione è in ambito dal debugger.
Inoltre, penso che EclipseFP possa dirvi il tipo di cose quando vi passate sopra con il mouse, almeno una parte del tempo.
Questo è un hack rapido e brutto, ma quello che di solito fare è semplicemente usare la funzione nel modo sbagliato e leggere il messaggio di errore: uscita
inc x = x + 1
where
f (y, z) = y + z
g = f :: Char
GHCi:
Couldn't match expected type `Char'
against inferred type `(t, t) -> t'
In the expression: f :: Char
Anche se questo lascia fuori il contesto Num t =>
, questo di solito mi fornisce abbastanza informazioni per continuare.
+1 Eccellente! Questo mi ha davvero aiutato a capire una definizione di funzione pelosa! Nota: funziona su *** qualsiasi espressione *** nella definizione della funzione. Per esempio se vuoi vedere il tipo di 'blah' in' f x = foo + blah', do - 'f x = pippo + (lascia exp = blah in exp :: Char)'. –
Con GHC 7.8+, è sufficiente aggiungere `asTypeOf` _
all'espressione.
Vedere Find out the type of an expression/function with typed holes per una spiegazione dettagliata.
- 1. Strange Haskell/GHCi problema
- 2. Can runhaskell accetta opzioni da .ghci?
- 3. Tipo di funzione di stampa su console senza ghci
- 4. Haskell/Miranda: Trova il tipo di funzione
- 5. Trova il tipo dedotto per la funzione locale
- 6. Come trovare il tipo di una funzione in Elm repl
- 7. Can Python può stampare una definizione di funzione?
- 8. Modello Haskell: reify in GHCi
- 9. Come si controlla il tipo di una variabile locale?
- 10. Funzione Haskell che restituisce il tipo esistenziale
- 11. Test-suite Haskell Stack Ghci
- 12. Can Emacs può mostrarmi dove viene chiamata una funzione specifica?
- 13. Haskell csv-conduit in GHCi
- 14. Can Dapper può restituire valori da una funzione SQL?
- 15. determinare il comportamento funzione dal tipo di funzione
- 16. comprensione comportamento Haskell/GHCI per la ricorsione
- 17. Haskell: inferenza di tipo e la funzione di composizione
- 18. Haskell, moltiplicando Int e Float all'interno di una funzione
- 19. completamento della scheda ghci in modalità haskell
- 20. La funzione Haskell non termina
- 21. Una funzione Haskell di tipo: IO String-> String
- 22. Disabilitare la coercizione di tipo Haskell
- 23. il compilatore può dirmi quale funzione di sovraccarico o modello ha scelto?
- 24. Can MongoDB può ordinare alfanumerico?
- 25. tipo familiare Shenanigans in GHCi
- 26. Come definire una funzione in ghci su più righe?
- 27. Quando la riduzione di eta può cambiare il tipo di una funzione?
- 28. Visual Studio può dirmi quale riferimento ha generato una NullReferenceException?
- 29. Qualcuno può dirmi la differenza? javascript oop
- 30. Qualcuno può dirmi che lingua è questa?
Whoa, ho appena capito che i punti di interruzione erano un'opzione, dopo aver postato una soluzione semicotta e contorta ... Poi ho notato questa risposta. GHCi stampa i tipi di espressioni nell'ambito corrente quando si ferma a un punto di interruzione senza alcun pungolo speciale, quindi è solo una questione di posizionamento. +1! –
Suggerimento, ma non funziona se il codice non viene compilato. La risposta di Tom può tornare utile. –