Size: a a a

Теория категорий

2019 September 24

AZ

Alex Zhukovsky in Теория категорий
def stateMonad[S]: Monad[({type L[A] = State[S, A]})#L] = {
type StateS[A] = State[S, A]

new Monad[StateS] {
 override def unit[A](a: => A): StateS[A] = State(s => (a, s))
 override def flatMap[A, B](f: StateS[A])(g: A => StateS[B]): StateS[B] =
   State[S, B](
     s1 => {
       val (a, s2) = f.run(s1)
       g(a).run(s2)
     }
   )
}
}
источник

AZ

Alex Zhukovsky in Теория категорий
вот взяли стейт, чето поделали, запаковали в новый
источник

AZ

Alex Zhukovsky in Теория категорий
в общем я думаю можно проще сделать: нужно понять, какая реализация у contramap
источник

SK

Slava Karkunov in Теория категорий
прекомпозиция для функций 🙂
источник

AZ

Alex Zhukovsky in Теория категорий
Грубо говоря по-моему это эквивалентно написанию функции foo(f: A -> B, b: Option<B>) -> Option<A>
источник

AZ

Alex Zhukovsky in Теория категорий
которая очевидно работаь не может никак
источник

SK

Slava Karkunov in Теория категорий
да
источник

(

( in Теория категорий
а для континуэйшенов кста есть контравариантный функтор?
источник

SK

Slava Karkunov in Теория категорий
потому, что Оption - ковариантный
источник

AZ

Alex Zhukovsky in Теория категорий
А контравариантный известный какой-нибудь есть?
источник

SK

Slava Karkunov in Теория категорий
поэтому, в аналоге к доставанию из коробки нужно добавить другую сторону монеты - мы не достаем что-то из коробки, а кладем в нее что-то.
Контрвариантный функтор - это просто функция з закрепленным возвращаемым аргументом. Предикат, например.
источник

к

кана in Теория категорий
Alex Zhukovsky
в общем я думаю можно проще сделать: нужно понять, какая реализация у contramap
newtype Pred a = Pred { check :: a -> Bool }

contrmap :: (a -> b) -> (Pred b -> Pred a)
contrmap f (Pred p) = Pred (p . f)
источник

SK

Slava Karkunov in Теория категорий
Контраваринтный fa это не коробка из которой можно что-то достать. Это коробка в которую можно что-то положить и получить результат 🙂
источник

AZ

Alex Zhukovsky in Теория категорий
кана
newtype Pred a = Pred { check :: a -> Bool }

contrmap :: (a -> b) -> (Pred b -> Pred a)
contrmap f (Pred p) = Pred (p . f)
сначала было лучше
источник

к

кана in Теория категорий
у меня не влезало
источник

AZ

Alex Zhukovsky in Теория категорий
кана
у меня не влезало
подожду пока редактирования кончатся :)
источник

к

кана in Теория категорий
пожалуй тогда мб просто стоит удалить, чтобы не заставлять никого ждать?
источник

AZ

Alex Zhukovsky in Теория категорий
кана
newtype Pred a = Pred { check :: a -> Bool }

contrmap :: (a -> b) -> (Pred b -> Pred a)
contrmap f (Pred p) = Pred (p . f)
Спасибо за пример, стало намного лучше.
источник

AZ

Alex Zhukovsky in Теория категорий
щас, там точно правильнон написано?
источник

AZ

Alex Zhukovsky in Теория категорий
Pred (a -> bool . a -> b)
источник