Могу ли я в GHCi использовать результат предыдущего выражения?

Я провожу некоторые эксперименты в GHCi, и у меня есть довольно долгая (5 минут) операция, которую я пытаюсь настроить. Результат начинает распечатываться на полпути, и я часто могу сказать, что мой алгоритм еще не настроен правильно через 1 минуту или меньше, поэтому я отменяю операцию. Но когда я нахожу результат, я хочу, чтобы он продолжался до конца, а затем также использовал его. Однако, если я назначу его при запуске, я не увижу, как он обрабатывается. Есть ли способ получить доступ к результату предыдущего выражения, введенного в GHCi?


person Drew    schedule 06.06.2013    source источник
comment
book.realworldhaskell.org/read/getting-started.html#x_U2   -  person Gene T    schedule 08.06.2013


Ответы (1)


GHCi имеет специальную переменную it для этой цели.

Prelude> 1
  1
Prelude> it
  1

Причина этого, как описано в документах GHCi. заключается в том, что выражения, не относящиеся к вводу/выводу, ведут себя так

someExpr ==> let it = someExpr
             print it

Если бы someExpr было IO, то у нас было бы

it <- someExpr
print it

поэтому it всегда должно быть результатом вашего предыдущего выражения.

person Daniel Gratzer    schedule 06.06.2013