Library zoo_persistent.pqueue__code
Require Import zoo.prelude.
Require Import zoo.language.typeclasses.
Require Import zoo.language.notations.
Require Import zoo_std.list.
Require Import zoo.options.
Notation "'pqueueู front'" := (
in_type "zoo_persistent.pqueue.t" 0
)(in custom zoo_proj
).
Notation "'pqueueู back'" := (
in_type "zoo_persistent.pqueue.t" 1
)(in custom zoo_proj
).
Definition pqueueู empty : val :=
([], []).
Definition pqueueู is_empty : val :=
๐ณ๐๐ป "t" โ
listู is_empty "t".<pqueueู front>
๐ฎ๐ป๐ฑ
listู is_empty "t".<pqueueู back>.
Definition pqueueู push : val :=
๐ณ๐๐ป "t" "v" โ
("t".<pqueueู front>, "v" :: "t".<pqueueู back>).
Definition pqueueู pop : val :=
๐ณ๐๐ป "t" โ
๐บ๐ฎ๐๐ฐ๐ต "t".<pqueueู front> ๐๐ถ๐๐ต
| "v" :: "front" โ
โSome( ("v", ("front", "t".<pqueueู back>)) )
| [] โ
๐บ๐ฎ๐๐ฐ๐ต listู rev "t".<pqueueู back> ๐๐ถ๐๐ต
| [] โ
ยงNone
| "v" :: "front" โ
โSome( ("v", ("front", [])) )
๐ฒ๐ป๐ฑ
๐ฒ๐ป๐ฑ.
Require Import zoo.language.typeclasses.
Require Import zoo.language.notations.
Require Import zoo_std.list.
Require Import zoo.options.
Notation "'pqueueู front'" := (
in_type "zoo_persistent.pqueue.t" 0
)(in custom zoo_proj
).
Notation "'pqueueู back'" := (
in_type "zoo_persistent.pqueue.t" 1
)(in custom zoo_proj
).
Definition pqueueู empty : val :=
([], []).
Definition pqueueู is_empty : val :=
๐ณ๐๐ป "t" โ
listู is_empty "t".<pqueueู front>
๐ฎ๐ป๐ฑ
listู is_empty "t".<pqueueู back>.
Definition pqueueู push : val :=
๐ณ๐๐ป "t" "v" โ
("t".<pqueueู front>, "v" :: "t".<pqueueู back>).
Definition pqueueู pop : val :=
๐ณ๐๐ป "t" โ
๐บ๐ฎ๐๐ฐ๐ต "t".<pqueueู front> ๐๐ถ๐๐ต
| "v" :: "front" โ
โSome( ("v", ("front", "t".<pqueueู back>)) )
| [] โ
๐บ๐ฎ๐๐ฐ๐ต listู rev "t".<pqueueู back> ๐๐ถ๐๐ต
| [] โ
ยงNone
| "v" :: "front" โ
โSome( ("v", ("front", [])) )
๐ฒ๐ป๐ฑ
๐ฒ๐ป๐ฑ.