169 похожих чатов

Очередной глупый вопрос. Есть вот такой умеренно бесполезный тип data Peano

= Z | S Peano
data Vec (n :: Peano) a where
VNil :: Vec 'Z a
VCons :: a -> Vec n a -> Vec ('S n) a
Он очевидно функтор, чуть менее очевидно аппликативный (зиппер). На первый взгляд (и на второй, но может я чего не вижу) -- не монада. Как это можно внятно обосновать кроме "ну у всех инстансов которые я придумал законы не выполняются"? Или всё-таки монада и я недодумал?

8 ответов

15 просмотров

Он аппликативный только если из него аналог ZipList сделать. А не-монада он, потому что n должно быть фиксировано тогда.

Lierdakil- Автор вопроса
TOV_MULTIMASSO
Он аппликативный только если из него аналог ZipLis...

Не осмыслил. n как раз таки фиксирован в типе (>>=) :: Monad (Vec n) => Vec n a -> (a -> Vec n b) -> Vec n b. Собственно потому из него монада и не получается (по крайней мере у меня в голове). Но я пока не построил логическую цепочку от одного к другому, поэтому и вопрос.

Lierdakil
Не осмыслил. n как раз таки фиксирован в типе (>>=...

Чисто логически нет вменяемого способа сделать это для простоянного n

Монада: join ((a,_), (_,b)) = (a,b)

Lierdakil- Автор вопроса
Алексей Худяков
Монада: join ((a,_), (_,b)) = (a,b)

Да, действительно, законы вроде выполняются. Недодумал.

Алексей Худяков
Монада: join ((a,_), (_,b)) = (a,b)

Поясните плиз что тут написано. Я тут вижу инстанс монады для newtype Foo a = Foo (a, a), но это явно не то

Ilya Kos
Поясните плиз что тут написано. Я тут вижу инстанс...

гомогенная пара — это Vec 2, по аналогии можно продлить до любого размера

Ilya Kos
Поясните плиз что тут написано. Я тут вижу инстанс...

Как уже сказали псевдокод для гомогенной пары (и N-тупли, конечно)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта