https://emerald.codingforstudent.com/5-no-nonsense-vector-valued-functions/