, Я думаю, что мое оригинальное решение является более общим.
олчанию нажатиеAlt+. или звонитAbort[]
в пределах оценки вызывает прерывание в настоящее время оцениваемого ввода. Но при работе во FrontEnd мы обычно отправляем ядру последовательность входных данных. Например, если мы введем следующие три выражения в отдельных строках в одномCell
а затем нажмитесдвиг+Войти мы получаем бесконечную оценку:
f := CheckAbort[Pause[.1], Abort[]]
While[True, f]
While[True, f]
While[True, f]
Чтобы остановить эту бесконечную оценку, мы должны нажатьAlt+. три раза.
Как определить функциюf
в приведенном выше примере таким образом, что нажатиеAlt+. один раз прервет оценку полной последовательности входовне выходя из ядра?
РЕДАКТИРОВАТЬ
Я думаю, что если FrontEnd создает очередь ввода для MathKernel, он, вероятно, также может отменить эту очередь.