Пользовательское выражение «let» в Scala

я бы хотел иметьlet построить аналогично тому, как в Haskell в Scala. Я попробовал несколько способов, но ни один не кажется хорошим. Вот'какой-то код:

object CustomLet extends App {
  val data = for (i  if (cond(res)) doSomethingWithRes(res) else 0}

  List[(String, () => Int)](
    ("withoutLet", withoutLet),
    ("letWithVal", letWithVal),
    ("letWithMatch", letWithMatch),
    ("letWithApp", letWithApp)
  ).foreach(
    item => item match {
      case (title, func) => {
        println(s"executing $title")
        val ret = func()
        println(s"$title finished with $ret")
        println()
      }
    }
  )
}

Это идеальный вид (только с одной привязкой, больше может быть разделено,; не уверен насчетin ключевое слово): Я

  // desired look
  def letTest(): Int =
    let res = heavyCalc() in
      if (cond(res)) doSomethingWithRes(res) else 0

я не уверен, если этоВозможно, но у меня нет опыта работы с большинством продвинутых вещей Scala, таких как макросы, поэтому я могуТ действительно сказать.

РЕДАКТИРОВАТЬ1: Чтобы быть ясно, основные вещи, которые яЯ ожидаю от этого:выражение и относительнопростой синтаксис (как описано выше).

Ответы на вопрос(2)

Ваш ответ на вопрос