title: require vs load vs include vs import in Racket
body: <p>The Racket docs indicate that Racket has separate forms for: <a href="http://docs.racket-lang.org/reference/require.html?q=require#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._require%29%29" rel="noreferrer"><code>require</code></a>, <a href="http://docs.racket-lang.org/reference/eval.html?q=load#%28def._%28%28quote._~23~25kernel%29._load%29%29" rel="noreferrer"><code>load</code></a>, <a href="http://docs.racket-lang.org/reference/include.html?q=include#%28form._%28%28lib._racket%2Finclude..rkt%29._include%29%29" rel="noreferrer"><code>include</code></a>, and <a href="http://docs.racket-lang.org/reference/creatingunits.html?q=import#%28form._%28%28lib._racket%2Funit..rkt%29._import%29%29" rel="noreferrer"><code>import</code></a>. Many other languages only contain one of these and are generally used synonymously (although obviously with language specific differences such as <code>#include</code> in C, and <code>import</code> in Java).</p>
  
  <p>Since Racket has all four of these, what is the difference between each one and which should I be using in general? Also if each has a specific use, when should I use an alternative type? Also, <a href="https://stackoverflow.com/questions/43470743/racket-include-require-and-provide-dont-work">this question</a> seems to indicate that <code>require</code> (paired with <a href="http://docs.racket-lang.org/reference/require.html?q=provide#%28form._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._provide%29%29" rel="noreferrer"><code>provide</code></a>) is preferred, why?</p>