줄리아에서 무한 배열 사용하는 법
개요
InfiniteArrays.jl
는 무한한 사이즈의 배열을 사용할 수 있게 해주는 패키지1로써, 사실 레이지 어레이lazy Array와 많은 연관이 있다. 느긋한 계산lazy Evaluation이란 배열에 어떤 것을 계산해야하는지는 알고있되, 정말로 필요하기 전까지는 계산을 미루는 방식이라 보면 된다. 물론 컴퓨터는 무한을 이해할 수 없지만, 이러한 방식을 사용해서 컴퓨터에서도 무한 배열을 구현한 것이다.
코드
∞
julia> using InfiniteArrays
julia> 3141592 < ∞
true
julia> Inf == ∞
true
julia> Inf === ∞
false
InfiniteArrays.jl
를 불러와보면 우선 ∞
기호로 무한을 표현할 수 있게 된다. 굳이 패키지를 꺼내지 않더라도 Inf
로 무한을 표현할 수 있지만 조금 더 직관적으로 사용할 수 있게 된 것이다. 이들은 대소관계 비교에 있어서는 똑같이 무한의 크기를 가지지만 포인터로 보면 서로 달라 구분할 수 있다.
ℵ₀
julia> x = zeros(Int64, ∞);
julia> length(x)
ℵ₀
0으로 채워진 무한배열을 만들면 이는 무한가산집합이므로 그 크기는 알레프 제로 $\aleph_{0}$ 다.
평범하게 사용할 수 있다
julia> x[2] = 3; x[94124843] = 7; x
ℵ₀-element LazyArrays.CachedArray{Int64, 1, Vector{Int64}, Zeros{Int64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}} with indices OneToInf():
0
3
0
0
0
0
0
0
0
⋮
julia> sum(x)
10
무한배열이라고 해서 뭐 엄청나게 인터페이스가 달라지는 건 없다. 그냥 평상시에 다루던 배열처럼 다루면 생각한대로 작동할 것이다.
전체코드
using InfiniteArrays
3141592 < ∞
Inf == ∞
Inf === ∞
x = zeros(Int64, ∞);
length(x)
x[2] = 3; x[94124843] = 7; x
sum(x)
환경
- OS: Windows
- julia: v1.7.3