Robię trochę eksperymentów w GHCi i mam umiarkowanie długą działającą (5 minut) operację, którą próbuję dostroić. Wynik zaczyna drukować w trakcie i często mogę stwierdzić, że mój algorytm nie jest poprawnie dostrojony jeszcze po 1 minucie lub mniej, więc anuluję operację. Ale kiedy znajdę wynik, chcę dopuścić go do końca, a następnie użyć go później. Jeśli jednak przypiszę go, kiedy go uruchomię, nie będę mógł go zobaczyć podczas przetwarzania. Czy jest jakiś sposób uzyskania dostępu do wyniku poprzedniego wyrażenia wprowadzonego do GHCi?W GHCi, czy mogę użyć wyniku poprzedniego wyrażenia?
8
A
Odpowiedz
16
W tym celu GHCi ma specjalną zmienną it
.
Prelude> 1
1
Prelude> it
1
Powodem tego, jak wyjaśniono w GHCi docs jest to, że wyrażenia non-IO zachowywać się tak
someExpr ==> let it = someExpr
print it
Jeśli someExpr
był IO wtedy musielibyśmy
it <- someExpr
print it
tak it
powinien zawsze być wynikiem poprzedniego wyrażenia.
http://book.realworldhaskell.org/read/getting-started.html#x_U2 –