gpt4 book ai didi

tuples - 在 Julia (Julia)中,从前面或后面种植一个元组是否更有表现力?

转载 作者:行者123 更新时间:2023-12-03 16:11:34 25 4
gpt4 key购买 nike

如果我有一个构建元组的递归函数,则在每个函数中,它通过在元组中添加/添加一个元素来创建一个新的元组,将其朝前或朝后生长会更好吗?有关系吗?即使其中之一最终最终执行相同的操作,它们在编译器上是否更容易?

以这个愚蠢的函数为例,想象一下我不在乎数字是升序还是降序(因为我总是可以调整调用代码以任何一种方式工作):

julia> function tuple_one_through_n(n, t=())::Tuple
if n === 0
t
else
tuple_one_through_n(n-1, (n, t...))
end
end
tuple_one_through_n (generic function with 2 methods)

julia> tuple_one_through_n(5)
(1, 2, 3, 4, 5)


有什么理由更喜欢在 t之前或之后喷涂 n?谢谢!

编辑:
有关更多上下文:我们将像这样添加元组,因为实际上是将其用作不可变的函数跟踪,并且通过添加来创建新的元组是线程安全的,因此即使我们产生新的任务也可以使用:每个任务都会得到跟踪所有调用者的是自己的堆栈跟踪增长。

我认为更好的选择可能是类似于 https://github.com/JuliaCollections/FunctionalCollections.jl/blob/master/README.md中的不可变 PersistentVector,但是对于最简单的第一遍,我只是使用元组,我想知道是否有任何理由偏爱一个订单或另一个订单。 :)由于有些人可能有一个有效的用例来增长元组,所以我想问一下。

最佳答案

这将影响动态调度,并且速度太慢,因此问题的答案无关紧要。而且,如果整个过程都展开了,那么显然也没有关系,因为将生成相同的表达式。

在这里使用元组似乎是错误的事情(将其增长到长度n通常为O(n ^ 2))

关于tuples - 在 Julia (Julia)中,从前面或后面种植一个元组是否更有表现力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60877267/

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