Library zoo_std.queue_1__code
From zoo Require Import
prelude.
From zoo.language Require Import
typeclasses
notations.
From zoo_std Require Import
chain.
From zoo_std Require Import
queue_1__types.
From zoo Require Import
options.
Definition queue_1٠create : val :=
fun: ≠ ⇒
let: "front" := { (), () } in
{ "front", "front" }.
Definition queue_1٠is_empty : val :=
fun: "t" ⇒
"t".{front} == "t".{back}.
Definition queue_1٠push : val :=
fun: "t" "v" ⇒
let: "back" := "t".{back} in
let: "new_back" := { (), () } in
"back" <-{chain_next} "new_back" ;;
"back" <-{chain_data} "v" ;;
"t" <-{back} "new_back".
Definition queue_1٠pop : val :=
fun: "t" ⇒
if: queue_1٠is_empty "t" then (
§None
) else (
let: "front" := "t".{front} in
"t" <-{front} "front".{chain_next} ;;
let: "v" := "front".{chain_data} in
‘Some( "v" )
).
prelude.
From zoo.language Require Import
typeclasses
notations.
From zoo_std Require Import
chain.
From zoo_std Require Import
queue_1__types.
From zoo Require Import
options.
Definition queue_1٠create : val :=
fun: ≠ ⇒
let: "front" := { (), () } in
{ "front", "front" }.
Definition queue_1٠is_empty : val :=
fun: "t" ⇒
"t".{front} == "t".{back}.
Definition queue_1٠push : val :=
fun: "t" "v" ⇒
let: "back" := "t".{back} in
let: "new_back" := { (), () } in
"back" <-{chain_next} "new_back" ;;
"back" <-{chain_data} "v" ;;
"t" <-{back} "new_back".
Definition queue_1٠pop : val :=
fun: "t" ⇒
if: queue_1٠is_empty "t" then (
§None
) else (
let: "front" := "t".{front} in
"t" <-{front} "front".{chain_next} ;;
let: "v" := "front".{chain_data} in
‘Some( "v" )
).