【发布时间】:2026-01-14 05:05:01
【问题描述】:
如何在 Haskell 中将此 let/where 函数转换为 lambda?
让语句形式:
calc x = let ad5 x = x + 5
sqr x = x * x
dbl x = x * 2
in
ad5 . sqr . dbl $ x
凡申报表:
calc x = ad5 . sqr . dbl $ x
where
ad5 x = x + 5
sqr x = x * x
dbl x = x * 2
Lambda 形式?可能类似于 Get Prog 中的这个示例,其中首先声明变量,然后在底部定义:
sumSqrOrSqrSum4 x y = (\sumSqr sqrSum ->
if sumSqr > sqrSum
then sumSqr
else sqrSum) (x^2 + y^2) ((x + y)^2)
【问题讨论】:
-
如果您需要 lambda 用于内联使用,那么
(\x -> ((x+5)*(x+5))*2) 4可能会导致 162。它并不优雅,但很短并且可以工作。
标签: haskell