2013-06-06 7 views
8

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?

+0

http://book.realworldhaskell.org/read/getting-started.html#x_U2 –

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.