sig
  type pos = { mutable x : float; mutable y : float; mutable d : float; }
  type color = { r : float; g : float; b : float; a : float; }
  type orders = Forward | Forward' | Turn | Save | Restore | Color
  val orders : (string * (Glilis.orders * int)) list
  type 'a turtle = {
    get_pos : unit -> Glilis.pos;
    get_color : unit -> Glilis.color;
    turn : float -> unit;
    move : ?trace:bool -> float -> unit;
    save_position : unit -> unit;
    restore_position : unit -> unit;
    color : Glilis.color -> unit;
    handle_lsys : (unit -> unit) -> 'a;
  }
  val turtle : unit -> unit Glilis.turtle
  val transform_rhs :
    'Glilis.turtle -> string -> ('-> float) array -> '-> unit
  val transform_lsys :
    'Glilis.turtle ->
    (string * 'b) Lilis.lsystem ->
    (('-> float) array -> '-> unit) Lilis.lsystem
end