троични оператори за клас на смятане

Чудех се за използването на троични оператори извън програмирането. Например, в онези досадни часове по математика, които са необходими за степен CS. Може ли човек да опише нещо като хиперболична функция с троичен оператор като този: 1/x? 1/x : безкрайност; Това предполага, че x е положително плаващо число и трябва да каже, че ако x != 0, тогава функцията връща 1/x, в противен случай връща безкрайност. Това би ли заобиколило цялата необходимост от ограничения?


person user1444872    schedule 12.09.2012    source източник
comment
Как една нотация може да заобиколи необходимостта от ограничения?   -  person D Stanley    schedule 12.09.2012
comment
Мисля, че имахте предвид x ? 1/x : infinity, а не 1/x ? 1/x : infinity.   -  person David Hammen    schedule 13.09.2012


Отговори (2)


Не съм напълно сигурен по отношение на конкретния въпрос, но да, троичният модул може да отговори на всеки въпрос, зададен като „ако/иначе“ или „ако и само ако, иначе“. Традиционно обаче математиката не се записва в условен формат с някакъв реален контрол на потока. 'if' и други механизми за контрол на потока позволяват на кода да се изпълнява по различни начини, но при повечето математика потокът е един и същ; просто резултатите са различни.

person Frank Thomas    schedule 12.09.2012

Математически всеки оператор може да бъде еквивалентно описан като функция, както в a + b = add(a,b); имайте предвид, че това важи и за програмирането. И в двата случая бинарните оператори са често срещан начин за описване на функции на два аргумента, защото са лесни за четене по този начин.

Тернарните оператори са по-трудни за четене и съответно са по-рядко срещани. Но тъй като математическата типография не се ограничава до едноизмерен текстов низ, много математически оператори имат голяма арност - например определен интеграл вероятно има 4 аргумента (начало, край, интегранд и диференциал).


За да отговоря на втория ви въпрос: не, това не заобикаля необходимостта от ограничения; бихте могли също толкова лесно да кажете, че алтернативата е 42 вместо infinity.

Също така ще спомена, че вашият 1/x пример така или иначе не съвпада с програмното използване на троичния оператор ?:. Обърнете внимание, че 1/x не е булево; изглежда, че се опитвате да използвате ?: за обработка на състояние, подобно на изключение, което би било по-подходящо за формуляр за опит/улавяне.

Освен това, когато кажете „Това предполага, че x е положително плаващо число“, как читателят трябва да знае това? Може би си спомняте, че има математическа нотация, която решава този специфичен проблем чрез посочване на граници отгоре....

person comingstorm    schedule 12.09.2012
comment
Мисля, че разбирам, че казвате, че троичен оператор би бил излишен, защото ще определя стойността на функция въз основа на параметъра(ите) на тази функция, когато това е, което самата функция вече прави. - person user1444872; 13.09.2012
comment
За да обобщя какво имах предвид: 1) операторите са просто функции, написани по различен начин, а математиката използва троични оператори и оператори с по-висока арност, точно както компютърните езици; 2) отговорът на въпроса ви за лимитите е не и вашият пример наистина няма смисъл в този контекст. - person comingstorm; 13.09.2012