是否存在函数具有中间变量+return的惰性函数(不可变)语言?

Is there a lazy functional (immutable) language where functions have intermediate variables+return?

如果这有明显的答案,我深表歉意。我想找到一种惰性函数式编程语言,其中以下伪代码有意义:

let f = function(x) {
    let y = x*x  // The variables y and z
    let z = y*2  // are local
    return z
}

当然,这在像 haskell 这样的函数式声明性语言中是可行的。使用 let 绑定或 where 关键字。这些只是在一个表达式中链接在一起。

--带有'where'

的局部变量
f :: Int -> Int
f x = z where
  z = y*2
  y = x*x

--带let

的局部变量
g :: Int -> Int
g x =
   let y = x*x
       z = y*2
     in z

https://wiki.haskell.org/Let_vs._Where