A data type for rational numbers can be defined with the constructor makeRational $[n, d]$ and the selectors numerator $[r]$ and denominator $[r]$. The representation of a data element is simply rational $[n, d]$. It should represent the rational number $n / d$. In this exercise, you should not use the built-in rational numbers; use only integers.
1. Give the definitions of makeRational, numerator, and denominator. Complete the right side:
$$
\begin{aligned}
& \text { makeRational }\left[n_{-}, d_{-}\right]:=\ldots \\
& \text { numerator }\left[\text { rational }\left[n_{-}, d_{-}\right]\right]:=\ldots \\
& \text { denominator }\left[\text { rational }\left[n_{-}, d_{-}\right]\right]:=\ldots \\
&
\end{aligned}
$$
2. The representation rational $[n, d]$ for rational numbers is not yet unique. For example, the expressions rational $[-1,2]$, rational $[1,-2]$, and rational $[-2,4]$ describe the same number. The representation becomes unique if we demand that the denominator is always positive and the numerator and denominator are relatively prime; that is, they have no factors in common. Find two rules for rational $\left[n_{-}, d_{-}\right]$that ensure that data elements are transformed into a unique form.
3. Give definitions for addition and multiplication of rational numbers that work exclusively with constructors and selectors. Complete the right side:
rational/: a_rational + b_rational $:=\ldots$
rational/: a_rational $*$ b_rational $:=\ldots$