Library zoo_std.glist__code

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

Notation "'glistู Nil'" := (
  in_type "zoo_std.glist.t" 0
)(in custom zoo_tag
).
Notation "'glistู Cons'" := (
  in_type "zoo_std.glist.t" 1
)(in custom zoo_tag
).

Definition glistู rev_app : val :=
  ๐—ฟ๐—ฒ๐—ฐ "rev_app" "t1" "t2" โ†’
    ๐—บ๐—ฎ๐˜๐—ฐ๐—ต "t1" ๐˜„๐—ถ๐˜๐—ต
    | glistู Nil โ†’
        "t2"
    | glistู Cons "v" "t1" โ†’
        "rev_app" "t1" โ€˜glistู Cons[ "v", "t2" ]
    ๐—ฒ๐—ป๐—ฑ.

Definition glistู rev : val :=
  ๐—ณ๐˜‚๐—ป "t" โ†’
    glistู rev_app "t" ยงglistู Nil.