Mathematica: как предотвратить оценку In [-1]? - PullRequest
4 голосов
/ 17 февраля 2011

Когда я пытаюсь получить последнее входное выражение в Wolfram Mathematica 5.2, используя In[-1], я получаю оцененный вывод:

In[1]:= On[In]
2 + 2
In[-1]

Out[2]= 4

During evaluation of In[1]:= In::trace: In[-1] --> In[$Line-1]. >>

During evaluation of In[1]:= In::trace: In[$Line-1] --> In[2]. >>

During evaluation of In[1]:= In::trace: In[2] --> 2+2. >>

Out[3]= 4

Как получить входное выражение в неоцененном видесформировать?

Ответы [ 2 ]

4 голосов
/ 17 февраля 2011

Вот еще один способ:

In[1]:= 2 + 2
With[{line = $Line - 1}, HoldForm[In[line]] /. DownValues[In]]

Out[1]= 4

Out[2]= 2+2

Редактировать:

Этот метод не работает должным образом с Unevaluated:

In[1]:= Unevaluated[2 + 2]
With[{line = $Line - 1}, HoldForm[In[line]]] /. (DownValues[In])
Out[1]= Unevaluated[2 + 2]
Out[2]= 2 + 2

Я открыл separate question on this.

4 голосов
/ 17 февраля 2011

Вы можете попробовать InString[]

In[1]:= 2 + 2
Out[1]= 4

In[2]:= InString[-1]
Out[2]= "\\(2 + 2\\)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...