Library zoo_std.deque__code

Require Import zoo.prelude.
Require Import zoo.language.typeclasses.
Require Import zoo.language.notations.
Require Import zoo_std.xdeque.
Require Import zoo.options.

Definition deque٠create : val :=
  xdeque٠create.

Definition deque٠is_empty : val :=
  xdeque٠is_empty.

Definition deque٠push_front : val :=
  𝗳𝘂𝗻 "t" "v"
    xdeque٠push_front "t" { "t", "t", "v" }.

Definition deque٠push_back : val :=
  𝗳𝘂𝗻 "t" "v"
    xdeque٠push_back "t" { "t", "t", "v" }.

Definition deque٠pop_front : val :=
  𝗳𝘂𝗻 "t"
    𝗺𝗮𝘁𝗰𝗵 xdeque٠pop_front "t" 𝘄𝗶𝘁𝗵
    | None
        §None
    | Some "node"
        Some( "node".{xdeque٠data} )
    𝗲𝗻𝗱.

Definition deque٠pop_back : val :=
  𝗳𝘂𝗻 "t"
    𝗺𝗮𝘁𝗰𝗵 xdeque٠pop_back "t" 𝘄𝗶𝘁𝗵
    | None
        §None
    | Some "node"
        Some( "node".{xdeque٠data} )
    𝗲𝗻𝗱.

Definition deque٠iter : val :=
  𝗳𝘂𝗻 "fn"
    xdeque٠iter (𝗳𝘂𝗻 "node" "fn" "node".{xdeque٠data}).