Имена на опасни символи, които започват с малка буква

Търся пълен списък с имена на опасни символи, които започват с малка буква в Mathematica.

В момента знам три такива имена: min, max и lim. Тези имена се появяват в списъка LimitsPositioningTokens и се се третират като оператори поне когато са въведени в FrontEnd с горен индекс:

In[3]:= Options[$FrontEnd,LimitsPositioningTokens]
Out[3]= {LimitsPositioningTokens->{\[Sum],\[Product],\[Intersection],
         \[Union],\[UnionPlus],\[Wedge],\[Vee],lim,max,min,\[CirclePlus],
         \[CircleMinus],\[CircleTimes],\[CircleDot]}}

въведете описание на изображението тук

Например, въведете в FrontEnd следното (използвайте Ctrl+^ за създаване на горен индекс - важно е!):

In[1]:= max^n+4
(max^n+4)//HoldComplete//FullForm
Out[1]= 4 max^n
Out[2]//FullForm= HoldComplete[Times[Power[max,n],Plus[4]]] 

екран

Виждате, че max^n+4 се интерпретира като 4*max^n в този случай.

Може ли някой да обясни какво всъщност прави опцията LimitsPositioningTokens?

Има ли други опасни символи, които започват с малка буква в Mathematica?


person Alexey Popkov    schedule 10.08.2011    source източник
comment
За да съм сигурен, че го виждам точно, изпълних FullForm[max^n + 4] (където горният индекс ^ беше генериран както по-горе) и получих Times[4, Power[max,n]]. Изглежда като най-лошия вид грешка.   -  person rcollyer    schedule 10.08.2011
comment
@rcollyer Alexey Може би трябва да публикувате $Version и $System, тъй като изглежда, че е свързано с версия/система. И на компютър, и на mac, работещ с M8, не можах да потвърдя тази грешка (вижте по-долу).   -  person Sjoerd C. de Vries    schedule 10.08.2011
comment
$Version = 7.0 for Mac OS X x86 (64-bit) (February 19, 2009) и $System = Mac OS X x86 (64-bit).   -  person rcollyer    schedule 10.08.2011
comment
@Sjoerd Проверих това във версии 7.0.1 и 5.2 за Windows. И в двата случая проблемът продължава.   -  person Alexey Popkov    schedule 10.08.2011
comment
Е, тогава изглежда, че е решен в 8.0.1.   -  person Sjoerd C. de Vries    schedule 10.08.2011


Отговори (1)


Не мога да потвърдя проблема, за който съобщавате. Освен това токените, които намерихте, изглежда са низове, а не символи.

въведете описание на изображението тук

Това е на win7-64/M8.0.1, mac lion/M8 на жена ми също не го показва.

Фактът, че те са низове, изглежда съответства на описанието на страницата с документи на LimitsPositioning

LimitsPositioningTokens е опция за клетка, която може да бъде зададена на списък с формуляри, за които трябва да се използва LimitsPositioning->True.

Всички дадени там примери използват низове.


Актуализация, за да илюстрирате мнението, направено в коментарите по-долу

Това е със стандартната настройка LimitsPositioningTokens в $FrontEnd:

въведете описание на изображението тук

и това е с SetOptions[$FrontEnd, LimitsPositioningTokens -> {}]:

въведете описание на изображението тук

Моля, имайте предвид, че настройката $FrontEnd със SetOptions е неподвижна. Вероятно вашата вече не е по подразбиране. Използвайте инспектора на опциите, за да върнете LimitsPositioningTokens към стойността по подразбиране (потърсете LimitsPositioningTokens с включени глобални настройки и премахнете кръстчето до променливата, ако има такова).

person Sjoerd C. de Vries    schedule 10.08.2011
comment
Всички токени в списъка на опцията LimitsPositioningTokens са низове. - person Alexey Popkov; 10.08.2011
comment
@rcollyer това правописна грешка ли е или има нова версия 7.1? Не получих бележката. - person Mr.Wizard; 13.08.2011
comment
@Mr.Wizard, под менюто About: даде 7.01.0, пуснах първата нула. Под системната информация, която генерира, той поставя датата на създаване като февруари 2009 г. - person rcollyer; 13.08.2011
comment
@alexey Имам предвид, че като низове те не замърсяват пространството от имена на символи. Така че не мисля, че вашият максимален проблем произтича (директно) от LimitsPositioningTokens. - person Sjoerd C. de Vries; 14.08.2011
comment
@Sjoerd LimitsPositioningTokens е свързан само с FrontEnd, не и с ядрото. Това няма да замърси пространството от имена на ядрото. Доколкото разбирам, тази опция контролира начина, по който FrontEnd интерпретира въведеното от потребителя. Ако оценя SetOptions[$FrontEnd,LimitsPositioningTokens->{}] и след това въведа max^n+4 с помощта на Ctrl+^ за създаване на горния индекс, проблемът изчезва във v. 7.0.1. - person Alexey Popkov; 15.08.2011
comment
@alexey От четене на документацията и моите собствени експерименти разбрах, че тази опция е свързана с форматиране, а не с интерпретация. Някои елементи като сигмата за сума имат индекси и/или горни индекси, които отиват отдолу и отгоре, респ. на този елемент, когато този елемент се появява в ред, но които отиват в долния десен и горния десен ъгъл, когато се използват в разделяне. LimitsPositioningTokens определя кои елементи ще направят това. Опитайте например Limit[1/x, x -› [Infinity]] и 1/Limit[1/x, x -› [Infinity]]. Не изпълнявайте, а променете на TraditionalForm. - person Sjoerd C. de Vries; 15.08.2011
comment
@Sjoerd Въвеждането на Limit[1/x, x -> [Infinity]] и 1/Limit[1/x, x -> [Infinity]] и преобразуването им в TraditionalForm Display чрез Cell|Convert to не дава нищо неочаквано: и двете са форматирани идентично (преобразуването в TraditionalForm не прави нищо). Не разбирам какво се опитваш да покажеш с този пример. Мисля, че примерите в моя въпрос ясно показват, че във версия 7.01 опцията LimitsPositioningTokens засяга интерпретацията на входа. Искате да кажете, че това поведение е грешка и наистина трябва да засяга само форматирането? Вашият пример не изяснява това. - person Alexey Popkov; 15.08.2011
comment
@Алексей обратната наклонена черта преди [Infinity] изчезна в процеса на копиране и поставяне. Можете ли да опитате TraditionalForm отново, но сега с обратната наклонена черта? Наистина SetOption[$FrontEnd,LimitsPositioningTokens-›{}] променя поведението на форматирането, за да не преминава към страничен стил в разделенията. Внимавайте първо да го настроите на оригиналния комплект. Повече информация на reference.wolfram.com/mathematica/ref/LimitsPositioning.html - person Sjoerd C. de Vries; 15.08.2011
comment
@Sjoerd Наистина няма никаква разлика в начина, по който тези два израза се преобразуват в токена на менюто TraditionalForm чрез Cell|Convert to|TraditionalForm във версия 7.0.1! Ето изразите: Limit[1/x, x -> \[Infinity]] и 1/Limit[1/x, x -> \[Infinity]]. И оценяването на SetOption[$FrontEnd,LimitsPositioningTokens->{}] с рестартиране на Mathematica не показва никаква разлика (съхранил съм и възстановил първоначалната стойност на тази опция преди). Между другото, символът \ не изчезва, когато го въведа в коментара тук. - person Alexey Popkov; 15.08.2011
comment
@Sjoerd Сега разбирам мнението ви, благодаря. Изглежда, че LimitsPositioningTokens не трябва да влияе на интерпретацията на входа и е добре да знаете, че тази грешка е коригирана във версия 8.0.1. - person Alexey Popkov; 16.08.2011
comment
@Sjoerd Приемам вашия отговор. До този момент в тази тема не са предложени имена на други опасни символи и затова се надявам, че в Mathematica няма имена на други опасни символи, започващи с малка буква. Единственото нещо, което наистина ме обърква е, че такъв опасен бъг продължава толкова дълго време (от поне v.5 до v.7). - person Alexey Popkov; 23.09.2011