title: I can't understand SOME, NONE, isSome in sml
body: <p>I can't understand SOME, NONE, isSome in sml
  As i know, each p1,p2...pn is constructor.</p>
  
  <pre><code>case e0 of
   p1 =&gt; e1
   p1 =&gt; e1
  |p2 =&gt; e2 
   …
  |pn =&gt; en
  </code></pre>
  
  <p>but when we denote </p>
  
  <p><code>datatype 'a option = NONE | SOME of 'a</code></p>
  
  <p>professor said NONE is not constructor but just subtype of 'a option
  I can't understand why it is.</p>
  
  <p>Also i have an error like this</p>
  
  <pre><code> isSome NONE;    
  
   stdIn:1.2-23.4 Error: operator and operand do not agree [tycon mismatch]                                                           
   operator domain: 'Z ?.Assembly.option
  </code></pre>
  
  <p>Am i wrong?</p>