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

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

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

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

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

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

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

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

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

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

3 ответов

12 просмотров

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

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 будет моноидом

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

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

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
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта