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 bAZ
λ
AZ
ap (,) Option<A> Option<B> == Option<(A,B)>λ
λ
(,) `fmap` Just x `ap` Just y = Just (x, y)AZ
AZ
(,) <$> Just 5 <*> Just 10AZ
λ