(Untitled)

Oct 02, 2021 14:25

А знаете ли вы, что привычную конструкцию if-then-else можно формально описать через символьную операцию умножения, и оно даже будет работать? Я попробовал это в Вольфрам. Подозреваю, я такой первый.

Leave a comment

Comments 10

poxu October 2 2021, 11:33:32 UTC
Я прямо сразу отвечу а вопрос. Нет, не знаю! Но очень любопытно, что ты имеешь в виду. Даже так - что такое символьная операция умножения? Может ты код из Вольфрама сюда скопипастишь?

Reply

lex_kravetski October 2 2021, 11:49:14 UTC
В буквальном смысле можно так сделать, чтобы, если написано…

if[condition] then[ifTrue] else[ifFalse]

…что аналогично…

if[condition] * then[ifTrue] * else[ifFalse]

это срабатывало бы как if-then-else.

> Даже так - что такое символьная операция умножения?

Это значит, что умножение работает на уровне выражений, а не чисел. Например, если с «икс» не связано какое-либо значение, то…

x * x

…всё равно будет вычислено и даст в результате

x2

Reply

evlasov October 2 2021, 13:42:26 UTC
все равно ничего не понял )

Reply

nightriderz1 October 3 2021, 16:01:47 UTC
Погоди. Привыкшим к более стандартным и унылым парадигмам все равно непонятно.
Я глянул бегло документацию W. - синтаксис иф'а таков: if[condition, t, f], может опускаться false часть, тогда вместо неё null используется: if[condition, t]. А как оно работает, если сделать, как ты написал:
if[condition] * ?
Что происходит с then[ifTrue] - берется ifTrue как символ при неизвестном then или что? У нас же then[ifTrue] должно редуцироваться до символьного ifTrue?

Reply


black_semargl October 16 2021, 15:25:57 UTC
Иногда - будет. Но, например
if x!=0 then z=y/x else out("фигня какая-то!")

Reply

lex_kravetski October 17 2021, 07:13:10 UTC
В Вольфрам и это тоже сработает.

if[x != 0] * then[z = x/y] * else[Print["фигня какая-то!"]]

Reply

black_semargl October 18 2021, 07:18:42 UTC
А ошибку как результат не выдаст?
И тут всё равно if then else в наличии

Reply


Leave a comment

Up