adamc@915: con dlist :: Type -> Type
adamc@915: type position
adamc@915: 
adamc@951: val create : t ::: Type -> transaction (dlist t)
adamc@915: val clear : t ::: Type -> dlist t -> transaction unit
adamc@915: val append : t ::: Type -> dlist t -> t -> transaction position
adamc@954: val replace : t ::: Type -> dlist t -> list t -> transaction unit
adamc@954: 
adamc@915: val delete : position -> transaction unit
adamc@915: val elements : t ::: Type -> dlist t -> signal (list t)
adamc@964: val size : t ::: Type -> dlist t -> signal int
adamc@965: val numPassing : t ::: Type -> (t -> signal bool) -> dlist t -> signal int
adamc@937: val foldl : t ::: Type -> acc ::: Type -> (t -> acc -> signal acc) -> acc -> dlist t -> signal acc
adamc@915: 
adamc@915: val render : ctx ::: {Unit} -> [ctx ~ body] => t ::: Type
adamc@915:              -> (t -> position -> xml (ctx ++ body) [] [])
adamc@962:              -> {StartPosition : signal (option int),
adamc@963:                  MaxLength : signal (option int),
adamc@962:                  Filter : t -> signal bool,
adamc@952:                  Sort : signal (option (t -> t -> signal bool)) (* <= *)}
adamc@915:              -> dlist t
adamc@915:              -> xml (ctx ++ body) [] []