Skip to content

Commit 72d264b

Browse files
committed
Add inlined methods for ntuple(f, Val{N}) for 1 ≤ N ≤ 10
1 parent 9f200a5 commit 72d264b

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

base/tuple.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,17 @@ end
123123
_ntuple(f, n) = (@_noinline_meta; ([f(i) for i = 1:n]...))
124124

125125
# inferrable ntuple
126+
ntuple{F}(f::F, ::Type{Val{1}}) = (@_inline_meta; (f(1),))
127+
ntuple{F}(f::F, ::Type{Val{2}}) = (@_inline_meta; (f(1), f(2)))
128+
ntuple{F}(f::F, ::Type{Val{3}}) = (@_inline_meta; (f(1), f(2), f(3)))
129+
ntuple{F}(f::F, ::Type{Val{4}}) = (@_inline_meta; (f(1), f(2), f(3), f(4)))
130+
ntuple{F}(f::F, ::Type{Val{5}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5)))
131+
ntuple{F}(f::F, ::Type{Val{6}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6)))
132+
ntuple{F}(f::F, ::Type{Val{7}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7)))
133+
ntuple{F}(f::F, ::Type{Val{8}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8)))
134+
ntuple{F}(f::F, ::Type{Val{9}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9)))
135+
ntuple{F}(f::F, ::Type{Val{10}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10)))
136+
126137
function ntuple{F,N}(f::F, ::Type{Val{N}})
127138
Core.typeassert(N, Int)
128139
_ntuple((), f, Val{N})

0 commit comments

Comments
 (0)