Usando callbacks fica mais simples:
const _for = (step) => (cond, cb, init = 0) => {
const iterate = (i) => {
if (cond(i)) return
cb(i)
iterate(step(i))
}
iterate(init)
}
const times = _for(i => i + 1)
const until = n => i => i >= n
times(until(10), i => times(until(10), j => console.log(i, j)))
Boa, a ideia de usar callbacks real ajuda mt, usei bastante pra compor a minha solução aki:
F = (s, e, T=(i)=>i, C=(i,e)=>i>=e, A=(i)=>++i) =>
C(s, e) ? [] : [T(s), ...F(A(s), e, T, C, A)];
console.log(F(0,5));
console.log(F(100, 0, (i)=>i**2, (i,e)=>i<=e, (i)=>i-10));
Eu dei mais detalhes no outro comentário ali, é massa q chegamos em soluções parecidas em essência. O meme eh q a minha devolve um array no final, o que não eh mt necessário. Good job maninho(a)! :muscle:
Yo yo, a sua resolução é bastante interessante, gostei da implementação e da forma que fez a sua solução para esse desafio, mas senti falta de alguns pontos, como:
- Explicação de como chegou nesse resultado.
- Explicação de como funciona de fato essa função.
Só senti falta desses pontos, teria sido mais interessante os ter adicionado, mas realizou o desafio e de uma forma criativa, meus parabéns. ^-^