Информация об изменениях

Сообщение Re[6]: Context Receivers от 30.08.2022 14:01

Изменено 30.08.2022 14:02 ·

Re[6]: Context Receivers
Здравствуйте, kov_serg, Вы писали:

_>>>Помимо всего прочего их можно использовать для построения графа вычислений по выражению.

_>·>Не очень ясно как. Для этого надо захватывать аргументы, а не их значения. Или я не понял что ты имеешь в виду.
_>    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, Вы писали:

_>>>Помимо всего прочего их можно использовать для построения графа вычислений по выражению.

_>·>Не очень ясно как. Для этого надо захватывать аргументы, а не их значения. Или я не понял что ты имеешь в виду.
_>    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.