gpt4 book ai didi

java - 如何对多变量函数建模?

转载 作者:行者123 更新时间:2023-12-02 00:30:38 25 4
gpt4 key购买 nike

我们知道 Map 接口(interface)模型是数学中的函数抽象。我应该如何建模多变量函数?例如,要建模 f(x, y, z),我有两个选择:

Map<List<Integer>, Integer> f1;

Map<Integer, Map<Integer, Map<Integer, Integer>>> f2;

你觉得哪一个更好?

谢谢

最佳答案

都不是。

您正在寻找的技术名为 uncurrying 。我们知道,一个函数代表一个逻辑蕴涵:

∀ a b. a -> b

我们还知道,如果 A 和 B 隐含 C,那么 A 隐含 B 隐含 C:

∀ a b c. ((a, b) => c) <=> (a => b => c)

Here's proof.查看真值表的逻辑含义,您会发现它们是等效的。那么如何在类型级别表示 A 和 B 呢?您使用产品类型。两种类型的乘积是一对,即一个类型的值同时具有两种类型:

interface P2<A, B> { public A _1(); public B _2(); }

您可以对三元组或任何数量的元组执行相同的操作。但请注意,因为这种推理会导致您进入异构列表,其中 aren't pretty in Java .

此外,您的 Map 表示仅适用于部分函数。更重要的是,JDK 的 Map 接口(interface)被设计为可变的,谁听说过可变函数?这是一个更好的表示:

interface F<A, B> { public B apply(A a); }

关于java - 如何对多变量函数建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115052/

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