anchor.diff:  (* Datatype *)
   type Album = { Name: string; Year: int }
   type Song  = { Artist: string; Song: string; TimeInSec: int; Album: Album }
  -type Attribute = AttrName of string
  -               | AttrYear of int 
  -               | AttrArtist of string
  -               | AttrSong of string
  -               | AttrTimeInSec of int
  -               | AttrAlbum of string
   
   (* Parse JSON *)
   type Json = JString of string
  
positive.code:     0
  
  let runload file =
      0
  
  let runplay =
  
negative.code: let json = ws >>. jvalue .>> ws .>> eof
  
  (* Parse Playlist *)
  type Attribute = AttrName of string
                 | AttrYear of int 
                 | AttrArtist of string
                 | AttrSong of string
                 | AttrTimeInSec of int
                 | AttrAlbum of string
  type SeOp = SeoLt
            | SeoEq
            | SeoGt
  type SeSort = SesOrder of Attribute list
              | SesShuffle
  type Sby = (SeOp * Attribute) list
  
  let sop =     stringReturn "<" SeoLt
            <|> stringReturn "=" SeoEq
            <|> stringReturn ">" SeoGt
  let sattributeop =     (str "Name"      >>. ws >>. (sop .>> ws) .>>. (stringLiteral |>> AttrName))
                     <|> (str "Year"      >>. ws >>. (sop .>> ws) .>>. (pint32        |>> AttrYear))
                     <|> (str "Artist"    >>. ws >>. (sop .>> ws) .>>. (stringLiteral |>> AttrArtist))
                     <|> (str "Song"      >>. ws >>. (sop .>> ws) .>>. (stringLiteral |>> AttrSong))
                     <|> (str "TimeInSec" >>. ws >>. (sop .>> ws) .>>. (pint32        |>> AttrTimeInSec))
                     <|> (str "Album"     >>. ws >>. (sop .>> ws) .>>. (stringLiteral |>> AttrAlbum))
  let sattribute =     (stringReturn "Name"      (AttrName ""))
                   <|> (stringReturn "Year"      (AttrYear 0))
                   <|> (stringReturn "Artist"    (AttrArtist ""))
                   <|> (stringReturn "Song"      (AttrSong ""))
                   <|> (stringReturn "TimeInSec" (AttrTimeInSec 0))
                   <|> (stringReturn "Album"     (AttrAlbum ""))
  let sby = str "by" >>. ws >>. (sepBy1 sattributeop (str ","))
  let sorder = str "order" >>. ws >>. (sepBy1 sattribute (str ",") |>> SesOrder)
  let sshuffle = stringReturn "shuffle" SesShuffle
  let ssort = sorder <|> sshuffle
  let stop = str "top" >>. ws >>. pint32
  let sselect = str "select" >>. sby .>>. ssort .>>. stop
  
  (* Main *)
  let runinit file =
  