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

Всем привет. Подскажите, пожалуйста, возможно ли определить тип для двумерной

матрицы, состоящей из элеметов типа Int, таким образом, чтобы под него подходили матрицы произвольного размера?

Другими словами, если есть:
- тип матрицы Matrix,
- тип трансформации MatrixTransform :: Matrix -> Matrix,

и если:
- S это множество трансформаций типа MatrixTransform,
- • это . (function composition),
- identity - это функция id,

То является ли это моноидом?

Конкретно меня интересует ассоциативность.

. :: (b -> c) -> (a -> b) -> (a -> c)

Так что, вроде как, технически даже наличие трансформаций, меняющих размер матрицы, не должно ничего нарушить, если тип матрицы позволяет иметь разные размеры.

Думаю, конструктор можно как минимум определить как [Int] -> h -> w, главное, чтобы h * w были равны длине списка.

3 ответов

14 просмотров

Технически, честного моноида тут не получится, получится категория

Ilya-Chernov Автор вопроса

https://hackage.haskell.org/package/matrix-0.3.6.1/docs/src/Data-Matrix.html#Matrix Вот тут что-то похожее сделано

если есть тип Matrix : Nat -> Nat -> Type который представляем матрицу n*m в виде значения типа Matrix n m то для любых n : Nat, множество функций Matrix n n -> Matrix n n с функцией (\x. x) : Matrix n n -> Matrix n n в качестве id будет моноидом

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта