Acessando a cabeça / cauda do Array ES2015

Antes em javascript, quando eu queria acessar o início e o fim de um array de maneira funcional, eu fazia:

function head(l) {
return l[0];
}

function tail(l) {
return l.slice(1);
}

Agora, com o ES2015, posso apenas usar a desestruturação e ela sai da caixa:

l = [1, 2, 3, 4];
[hd, ...tl] = l;
console
.log(hd) // 1
console
.log(tl) // [2, 3, 4]