https://dan-programs.medium.com/eloquent-exercises-vector-type-eloquent-javascript-chapter-6-abc1aa38f22c