тернарные операторы для класса исчисления

Мне было интересно использовать тернарные операторы вне программирования. Например, в тех надоедливых классах исчисления, которые необходимы для получения степени CS. Может ли человек описать что-то вроде гиперболической функции с тернарным оператором, например: 1/x? 1/х : бесконечность; Это предполагает, что 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 не является логическим; похоже, вы пытаетесь использовать ?: для обработки условия, похожего на исключение, которое лучше подходит для формы try/catch.

Кроме того, когда вы говорите: «Это предполагает, что x является положительным числом с плавающей запятой», как читатель должен это знать? Вы можете вспомнить, что существует математическая нотация, которая решает эту конкретную проблему, указывая пределы сверху...

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