А знаете ли вы, что привычную конструкцию if-then-else можно формально описать через символьную операцию умножения, и оно даже будет работать? Я попробовал это в Вольфрам. Подозреваю, я такой первый.
Я прямо сразу отвечу а вопрос. Нет, не знаю! Но очень любопытно, что ты имеешь в виду. Даже так - что такое символьная операция умножения? Может ты код из Вольфрама сюда скопипастишь?
Погоди. Привыкшим к более стандартным и унылым парадигмам все равно непонятно. Я глянул бегло документацию W. - синтаксис иф'а таков: if[condition, t, f], может опускаться false часть, тогда вместо неё null используется: if[condition, t]. А как оно работает, если сделать, как ты написал: if[condition] * ? Что происходит с then[ifTrue] - берется ifTrue как символ при неизвестном then или что? У нас же then[ifTrue] должно редуцироваться до символьного ifTrue?
Comments 10
Reply
if[condition] then[ifTrue] else[ifFalse]
…что аналогично…
if[condition] * then[ifTrue] * else[ifFalse]
это срабатывало бы как if-then-else.
> Даже так - что такое символьная операция умножения?
Это значит, что умножение работает на уровне выражений, а не чисел. Например, если с «икс» не связано какое-либо значение, то…
x * x
…всё равно будет вычислено и даст в результате
x2
Reply
Reply
Я глянул бегло документацию W. - синтаксис иф'а таков: if[condition, t, f], может опускаться false часть, тогда вместо неё null используется: if[condition, t]. А как оно работает, если сделать, как ты написал:
if[condition] * ?
Что происходит с then[ifTrue] - берется ifTrue как символ при неизвестном then или что? У нас же then[ifTrue] должно редуцироваться до символьного ifTrue?
Reply
if x!=0 then z=y/x else out("фигня какая-то!")
Reply
if[x != 0] * then[z = x/y] * else[Print["фигня какая-то!"]]
Reply
И тут всё равно if then else в наличии
Reply
Leave a comment