anchor.diff:  (**
   
   ---
  -### Option: Nutzung
  -
  -- Null vs Unbekannt/Fehlend
  -- Durch Option ist es möglich fehlende Werte explizit zu kennzeichnen
  -- Die Kennzeichnung erfolgt durch einen eigenen Typ
  -- Zugriffe auf fehlende Werte sind dann compile-time und keine run-time Fehler
  +### Option: Use
  +
  +- Null vs unknown/missing
  +- Option allows for an explicit designation of missing values
  +- Accessing missing values becomes a *compile-time* and not a *run-time* error 
   
   ' Referenzen auf nicht vorhandene Objekte sind nicht die beste Art und Weise 
   ' Code Analysis wird verwendet um Warnungen zu geben in C# 7.0.  Keine typ Unterstützung möglich wegen backward compatibility
  
positive.code: - Found in many functional languages
  
  ' In Haskel heißt dieser Typ Maybe, Just, Nothing. in Scala heißt es auch option, some, none.
  ' wirklich nichts besonders, nur das Module Option hat eigne funktionen
  
  *)
  
  type Option<'a> = // DU mit generischem Parameter
  | Some of 'a // Gültiger Wert
  | None // ???
  
  
  
negative.code: *)
  
  let s = Some "string"
  let none = None
  
  
  (**
  
  ---
  ### Option: Deconstruction and Pattern Matching
  
  - Must handle all cases in order to extract the value of the DU
  
  *)
  
  let optionMatch s = 
      match s with 
      | Some wert -> sprintf "Value: %s" wert
      | None -> ""
  
  let z  = optionMatch (Some("Hello"))
  let z' = optionMatch None
  
  (** <div style="display: none" > *)
  (*** define-output:Option-PatternMatching ***)
  printf "z = %s | " z
  printf "z' = %s" z'
  (** </div> *)
  (*** include-output:Option-PatternMatching ***)
  
  (**
  
  ---
  ### Option: Deconstruction and Pattern Matching
  - Option is often the result of an evaluation
  - None represents the case that no valid value was constructed
  
  *)
  
  let matchForOption s = 
      match s with 
      | "Sure" -> Some(s)
      | _ -> None
  
  let x  = matchForOption "Sure"
  let x' = matchForOption "Not"
  
  (** <div style="display: none" > *)
  (*** define-output:Option-Deconstruction ***)
  