首页 > 解决方案 > “Eta 转换”类型的应用程序

问题描述

在 Base、Core、Core.Compiler 等中是否存在将类型应用程序转换为函数应用程序的方法?换句话说,以下表达式中 lambda 的无点替换:

julia> ((T, U) -> Union{T, U})(Int, Bool)
Union{Bool, Int64}

我期望

Base.Fix1(Core.apply_type, Union)(Int, Bool)

工作,但不幸Fix1的是没有可变参数方法。

标签: typesjulia

解决方案


->伪运算符只是创建匿名函数的一种方式。
也许你想要一个做同样事情的非匿名函数。

f(T, U) = Union{T, U}

可能是一个。不过,这取决于您期望函数返回什么。上面的函数返回您给出的 -> 示例的作用:

julia> f(Int, Bool)
Union{Bool, Int64}

推荐阅读