import { type optic } from "https://deno.land/x/fun@v2.0.0/mod.ts";
const { Viewer } = optic;
A Viewer<T, S, A> implements a view function (s: S) => T<A>
. This is
effectively a Kliesli Arrow. The valid types of T are Identity, Option, and
Array. Viewer also includes a runtime tag corresponding to the return type of
the view function to aid in composition.