anchor.diff:          {
               string s2 = null;
               var len2 = s2.Length; 
  -            // WIR wissen, dass s2 null ist, der Compiler nicht
  +            // We know that s2 equals null.  Not so the compiler
           }
       }
   
  
positive.code: *)
  
  let s = Some "string"
  
  (**
  
  - Achtung: None wird nicht via Construction erstellt, sondern nur als Rückgabewert verwendet
  
  ---
  ### Option: Deconstruction und Pattern Matching
  
  - Alle Fälle müssen behandelt werden, damit ich den Wert des Option extrahieren kann
  
  *)
  
  let optionMatch s = 
      match s with 
      | Some wert -> sprintf "Wert ist %s" wert
      | None -> ""
  
  let z  = optionMatch (Some("Hello"))
  // Das nicht idiomatisch, nur für Demonstrationszwecke
  let z' = optionMatch None
  
  (**
  
  ' Achte darauf dass None hier den richtigen Typ hat, wegen des Aufruf an optionMatch: type Inference
  
  
  ---
  ### Option: Deconstruction und Pattern Matching
  - Option ist meistens das Ergebnis einer Auswertung
  - None stellt den Fall dar, dass kein sinnvolles Ergebnis vorhanden ist
  
  *)
  
  let matchForOption s = 
      match s with 
      | "Jawohl" -> Some(s)
      | _ -> None
  
  let x  = matchForOption "Jawohl"
  let x' = matchForOption "Doch nicht"
  
  (** <div style="display: none" > *)
  (*** define-output:Option-Deconstruction ***)
  
negative.code: - Found in many functional languages
  
  ' In Haskel heißt dieser Typ Maybe, Just, Nothing. in Scala heißt es auch option, some, none.
  ' Used extensively!
  
  *)
  
  type Option<'a> = // DU with a generic paramter
  | Some of 'a // Valid value
  | None // ???
  
  
  