Size: a a a

2020 February 10

AL

Andrey @ozkriff Lesnikov in rust_offtopic
Alex Zhukovsky
я к тому, что в хаскелле всё это побито на тайпкласссы
дык это, num со времени скриншота выше уже сам сильно поменяться успел - теперь Num типаж заметно менее пугающе выглядит: https://docs.rs/num/0.2.1/num/trait.Num.html

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 стремненький, хе)
источник

AZ

Alex Zhukovsky in rust_offtopic
Emmanuel Goldstein
Если не переопределяешь их все
а в каком случае тебе надо только +?
источник

λ

λоλторт in rust_offtopic
Alex Zhukovsky
Ну надо глянуть как в хаскелле сделан Num трейт
в хаскеле Num сделан максимально тупо
источник

AZ

Alex Zhukovsky in rust_offtopic
возможно тогда тебе не плюс нужен
источник

λ

λоλторт in rust_offtopic
прям в лоб
источник

λ

λоλторт in rust_offtopic
в итоге DiffTime на константу ты не умножишь
источник

AZ

Alex Zhukovsky in rust_offtopic
ну это да
источник

λ

λоλторт in rust_offtopic
Emmanuel Goldstein
В хаскелле меня всё ещё бесит то, что названия у функций стандартной библиотеки нечитаемые.
Даже если они состоят не из символов, а из букв, то называются очень коротко. ap — спасибо, очень понятно сходу, что это делает. Традиция использовать однобуквенные переменные не помогает.
очень сложно для ap придумать название, которое не будет сбивать с толку
источник

λ

λоλторт in rust_offtopic
Gymmasssorla
Угу, ещё есть названия функций X и X' в стандартной библиотеке. Спасибо, сразу понятно, что делает функция
даже не смотря на это, код на хаскеле всё ещё проще читать и понимать, чем в каком-нибудь TS'е благодаря хуглу
источник

B

Bogdan in rust_offtopic
λоλторт
очень сложно для ap придумать название, которое не будет сбивать с толку
Ого, а что делает этот ar?
источник

λ

λоλторт in rust_offtopic
ap :: Monad m => m (a -> b) -> m a -> m b
источник

AZ

Alex Zhukovsky in rust_offtopic
Bogdan
Ого, а что делает этот ar?
позволяет применить функцию к двум аппликативам (но определено в монаде лол)
источник

λ

λоλторт in rust_offtopic
эдакое монадическое применение
источник

AZ

Alex Zhukovsky in rust_offtopic
в частности из двух монад можешь получить монаду пары, то есть ap (,) Option<A> Option<B> == Option<(A,B)>
источник

λ

λоλторт in rust_offtopic
не так
источник

λ

λоλторт in rust_offtopic
(,) `fmap` Just x `ap` Just y = Just (x, y)
источник

AZ

Alex Zhukovsky in rust_offtopic
а, ну да, все время забываю эту фигню
источник

AZ

Alex Zhukovsky in rust_offtopic
к слову почему операторы удобнее, с ними забыть труднее

(,) <$> Just 5 <*> Just 10
источник

AZ

Alex Zhukovsky in rust_offtopic
хотя лифт проще читать
источник

λ

λоλторт in rust_offtopic
ApplicativeDo проще читать
источник