AL
pub trait Num: Zero + One + NumOps<Self, Self> + PartialEq<Self> {
type FromStrRadixErr;
fn from_str_radix(
str: &str,
radix: u32
) -> Result<Self, Self::FromStrRadixErr>;
}
(теперь NumOps стремненький, хе)
Size: a a a
AL
pub trait Num: Zero + One + NumOps<Self, Self> + PartialEq<Self> {
type FromStrRadixErr;
fn from_str_radix(
str: &str,
radix: u32
) -> Result<Self, Self::FromStrRadixErr>;
}
AZ
λ
AZ
λ
λ
AZ
λ
ap
— спасибо, очень понятно сходу, что это делает. Традиция использовать однобуквенные переменные не помогает.ap
придумать название, которое не будет сбивать с толкуλ
B
ap
придумать название, которое не будет сбивать с толкуλ
ap :: Monad m => m (a -> b) -> m a -> m b
AZ
λ
AZ
ap (,) Option<A> Option<B>
== Option<(A,B)>
λ
λ
(,) `fmap` Just x `ap` Just y = Just (x, y)
AZ
AZ
(,) <$> Just 5 <*> Just 10
AZ
λ