преобразование логического true/false в числовое 1/0?

В большинстве языков я могу либо напрямую умножить логическую истину на некоторое числовое значение, либо, по крайней мере, есть простая функция для преобразования типа Boolean в какой-то конкретный тип, например int или double. Обычно это просто, потому что «истина» или «ложь» — это просто псевдоним числового значения 1 или 0.

Но не в Максиме.

И я не могу найти ни одной встроенной функции для преобразования логических значений в числовые. Есть ли?

Например, как я могу выполнить условную маскировку функции?

F(x,param):=condition(x,param)*f(x), где условие возвращает логические значения, например (x>param)->true/false ?


person Asdf    schedule 13.07.2018    source источник


Ответы (1)


Например, вы можете написать (if x > param then 1 else 0)*f(x).

Вы также можете написать charfun(x > param)*f(x). См. ? charfun.

person Robert Dodier    schedule 16.07.2018
comment
Ты хоть представляешь, что означает charfun? Это полезно, но мне будет трудно запомнить это, хорошая мнемоника будет оценена по достоинству. - person Rolazaro Azeveires; 16.07.2018
comment
charfun = характеристическая функция, что сбивает с толку, поскольку характеристическая функция также означает преобразование Фурье плотности вероятности (и, возможно, другие вещи). Функция, которая равна 1 на некотором наборе и 0 в противном случае, также называется индикаторной функцией. - person Robert Dodier; 17.07.2018
comment
Да, индикатор, вероятно, был бы лучше, характеристика используется в слишком многих контекстах, чтобы быть полезной сама по себе. Ну... может быть, я запомню после этого разговора. :-) Спасибо. - person Rolazaro Azeveires; 17.07.2018
comment
Здорово! Большое спасибо! Это то, что я искал. Оказывается, инженерный способ рассказывать вещи сильно отличается от проматематического, поэтому все ключевые слова для Google были неправильными :) - person Asdf; 24.07.2018