@FunctionalInterface public static interface Func.T<𝓐,𝓑,𝓒,𝓓> extends Lazy<Func.T<𝓐,𝓑,𝓒,𝓓>>, frege.run.Kind.U<Func.T<𝓐,𝓑,𝓒,?>,𝓓>, frege.run.Kind.B<Func.T<𝓐,𝓑,?,?>,𝓒,𝓓>, frege.run.Kind.T<Func.T<𝓐,?,?,?>,𝓑,𝓒,𝓓>, frege.run.Kind.Q<Func.T<?,?,?,?>,𝓐,𝓑,𝓒,𝓓>
default Func.T<𝓐,𝓑,𝓒,𝓓> call()
LazyCompute the value if it is needed.
default boolean isShared()
LazyTell if this is shared.
Data and functions whose Lazy.call() method returns this as well
as simple boxes that just hold a value ready to be supplied and Thunks
are considered shared.
But a bare lambda expression is assumed to be in need of sharing. For example:
() -> 42