1 2 3 4 5 6 7 8 9 10 11 12
// Copyright (C) 2026 Industrial Algebra // SPDX-License-Identifier: Apache-2.0 use crate::arrow::Arrow; /// ArrowZero: an Arrow with a zero (failing/empty) morphism. /// /// Laws: /// - compose(zero_arrow(), f) == zero_arrow() (left absorption) pub trait ArrowZero: Arrow { fn zero_arrow<A: Clone + 'static, B: Clone + 'static>() -> Self::P<A, B>; }