///|
pub fn[V] memorized_0(f : () -> V) -> () -> V {
Lazy::memo(f).inner()
}
///|
pub fn[K, V] memorized_ignore_arg(f : (K) -> V) -> (K) -> V {
Reader::memo_ignore_arg(f).inner()
}
///|
pub fn[K : Hash + Eq, V] memorized(f : (K) -> V) -> (K) -> V {
Reader::memo(f).inner()
}
///|
test "memorized_0" {
let f = () => [["1"]]
let memoized = memorized_0(f)
assert_true(physical_equal(memoized(), memoized()))
assert_eq(memoized(), [["1"]])
}