Сообщение Re[6]: Context Receivers от 30.08.2022 14:01
Изменено 30.08.2022 14:02 ·
Re[6]: Context Receivers
Здравствуйте, kov_serg, Вы писали:
_>>>Помимо всего прочего их можно использовать для построения графа вычислений по выражению.
_>·>Не очень ясно как. Для этого надо захватывать аргументы, а не их значения. Или я не понял что ты имеешь в виду.
Тут, как я понял, эффект лишь от того, что есть перегрузка операторов и удалось обойтись бинарными операторами. "По старинке" это выглядело бы как-то так:
В итоге, если оно и полезно, то только в каком-то очень специфичном коде, где, например, много математики и хочется чтобы математические выражения выглядели более естественно.
А в целом, выглядит как очередной удобный дробовик для стрельбы в ногу, как и scala implicits.
_>>>Помимо всего прочего их можно использовать для построения графа вычислений по выражению.
_>·>Не очень ясно как. Для этого надо захватывать аргументы, а не их значения. Или я не понял что ты имеешь в виду.
_> with( Vars() ) {
_> val a=input("a")
_> val b=input("b")
_> val c=input("c")
_> val d=(a+b*c)*(a+b)
_> output("result",d)
_> }
_>}
Тут, как я понял, эффект лишь от того, что есть перегрузка операторов и удалось обойтись бинарными операторами. "По старинке" это выглядело бы как-то так:
val ctx = Vars()
val a=ctx.input("a")
val b=ctx.input("b")
val c=ctx.input("c")
val d=ctx.mul(ctx.plus(a, ctx.mul(b, c)), (ctx.plus(a, b)))
output("result",d)
}
В итоге, если оно и полезно, то только в каком-то очень специфичном коде, где, например, много математики и хочется чтобы математические выражения выглядели более естественно.
А в целом, выглядит как очередной удобный дробовик для стрельбы в ногу, как и scala implicits.
Re[6]: Context Receivers
Здравствуйте, kov_serg, Вы писали:
_>>>Помимо всего прочего их можно использовать для построения графа вычислений по выражению.
_>·>Не очень ясно как. Для этого надо захватывать аргументы, а не их значения. Или я не понял что ты имеешь в виду.
Тут, как я понял, эффект лишь от того, что есть перегрузка операторов и удалось обойтись бинарными операторами. "По старинке" это выглядело бы как-то так:
В итоге, если оно и полезно, то только в каком-то очень специфичном коде, где, например, много математики и хочется чтобы математические выражения выглядели более естественно.
А в целом, выглядит как очередной удобный дробовик для стрельбы в ногу, как и scala implicits.
_>>>Помимо всего прочего их можно использовать для построения графа вычислений по выражению.
_>·>Не очень ясно как. Для этого надо захватывать аргументы, а не их значения. Или я не понял что ты имеешь в виду.
_> with( Vars() ) {
_> val a=input("a")
_> val b=input("b")
_> val c=input("c")
_> val d=(a+b*c)*(a+b)
_> output("result",d)
_> }
_>}
Тут, как я понял, эффект лишь от того, что есть перегрузка операторов и удалось обойтись бинарными операторами. "По старинке" это выглядело бы как-то так:
val ctx = Vars()
val a=ctx.input("a")
val b=ctx.input("b")
val c=ctx.input("c")
val d=ctx.mul(ctx.plus(a, ctx.mul(b, c)), ctx.plus(a, b))
output("result",d)
}
В итоге, если оно и полезно, то только в каком-то очень специфичном коде, где, например, много математики и хочется чтобы математические выражения выглядели более естественно.
А в целом, выглядит как очередной удобный дробовик для стрельбы в ногу, как и scala implicits.