anchor.diff:  let rec move directions (z:'a TreeZipper) =
       directions
         |> Seq.map getMove
  -      |> Seq.fold (|>) z
  -        
  -/// Creates a zipper from a tree
  -let zipper t = { Focus = t; Path = [] } +      |> Seq.fold (|>) z       
positive.code: [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  module FSharpx.DataStructures.TreeZipper
  
  /// A simple binarys tree
  type 'a Tree=
     | Leaf
     | Branch of 'a * 'a Tree * 'a Tree
  
  type TreeDirection =  Left | Right
  type ZipperDirection = Up | Left | Right 
  
  /// The tree zipper datastructure
  type 'a TreeZipper  = { 
  
negative.code: /// Moves the zipper to the left
  let left z = 
      match z.Focus with
      | (Branch(v, explored, other)) -> { Focus = explored; Path = (Left, v, other) :: z.Path }
      | Leaf -> failwith "can't go down on leaf"
  
  /// Moves the zipper to the right
  let right z = 
      match z.Focus with
      | (Branch(v, other, explored)) -> { Focus = explored; Path = (Right, v, other) :: z.Path }
      | Leaf -> failwith "can't go down on leaf"
  
  /// Creates a zipper from a tree
  let zipper t = { Focus = t; Path = [] } 
  
  type TreeZipperDirection = Up | Left | Right 
  
  let inline getMove direction =
      match direction with
  