|
123 | 123 | _ntuple(f, n) = (@_noinline_meta; ([f(i) for i = 1:n]...))
|
124 | 124 |
|
125 | 125 | # 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 | + |
126 | 137 | function ntuple{F,N}(f::F, ::Type{Val{N}})
|
127 | 138 | Core.typeassert(N, Int)
|
128 | 139 | _ntuple((), f, Val{N})
|
|
0 commit comments