gpt4 book ai didi

r - lambda 演算对返回值有什么要说的?

转载 作者:行者123 更新时间:2023-12-04 01:07:39 27 4
gpt4 key购买 nike

到目前为止,lambda 演算的一个众所周知的定理是,任何接受两个或多个参数的函数都可以通过柯里化(Currying)写成一个接受一个参数的函数链:

# Pseudo-code for currying
f(x,y) -> f_curried(x)(y)

事实证明,这不仅在研究函数的行为方面而且在实际使用中(Haskell 等)都非常强大。

但是,似乎没有讨论返回值的函数。程序员通常通过返回一些元对象(R 中的列表、C++ 中的结构等)来处理无法从函数返回多个值的问题。它总是让我觉得有点杂乱无章,但很有用。

例如:
# R code for "faking" multiple return values
uselessFunc <- function(dat) {
model1 <- lm( y ~ x , data=dat )
return( list( coef=coef(model1), form=formula(model1) ) )
}

问题
  • lambda 演算对返回值的多样性有什么要说的吗?如果是这样,是否会得出任何令人惊讶的结论?
  • 同样,是否有任何语言允许真正的多个返回值?
  • 最佳答案

    根据维基百科 page关于 lambda 演算:

    Lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion



    还有一个函数,在数学 sense :

    Associates one quantity, the argument of the function, also known as the input, with another quantity, the value of the function, also known as the output



    所以回答你的第一个问题不,lambda演算(或任何其他基于数学函数的形式)不能有多个返回值。

    对于您的第二个问题,据我所知,实现多个返回值的编程语言通过将多个结果打包到某种数据结构(无论是元组、数组甚至堆栈)中,然后再将其解包来实现 -这就是差异所在,因为某些编程语言使打包/解包部分对程序员透明(例如 Python 在后台使用元组),而其他语言使程序员明确地完成工作,例如 Java 程序员可以模拟多次返回通过将多个结果打包到返回的 Object 数组中,然后手动提取和转换返回的结果,可以在某种程度上获得值。

    关于r - lambda 演算对返回值有什么要说的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227890/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com