[personal profile] sassa_nf
А вот скажите, пожалуйста.

data Console a = Console { runConsole :: ConsoleStruct -> IO a }
data Coords = Coords Int Int
...
cursorCoords :: Console Coords
cursorCoords = Console getCursorCoords

getCursorCoords :: ConsoleStruct -> IO a
getCursorCoords c = someNativeFunction c >>= peek
Так вот, что за cursorCoords? Это функтором перенесённая getCursorCoords? Типа, все объекты и стрелки переносятся generically, а выборочно Console ConsoleStruct = (), и Console getCursorCoords = cursorCoords?

С одной стороны - вроде бы да, а с другой стороны - дык, fmap getCursorCoords в принципе тоже существует. Как же так?


Нет, не так. Поскольку CCC, то getCursorCoords соответствует curried функция ()→IO Coords, т.е. (IO Coords)ConsoleStruct. Этот объект, как и все, отображается функтором, т.е. попадаем в Console Coords. А cursorCoords - просто именованная ссылка на именно этот объект. Вот.

Date: 2012-11-27 10:00 am (UTC)
From: [identity profile] palm-mute.livejournal.com
а без категорий вопрос переформулировать можно?

Date: 2012-11-27 11:06 am (UTC)
From: [identity profile] sassa-nf.livejournal.com
да тут именно в категориях вопрос :) Хочется ж увидеть "алгебраическую структуру".

Вот была функция с параметром, а теперь аргумент исчез. Но за счёт чего эти функции коммутируют? Это свойство функтора (как быть, что fmap getCursorCoords тоже существует), категории (ммм.... это CCC, так что, всем ConsoleStruct → B соответствует ()→BConsoleStruct, но как тогда привязать к функтору как отображению всех объектов) или естественного преобразования (ну тут даже не видно, как что-либо определено как семейство функций для всех объектов)?

Какое-то понимание без категорий появилось - полегчало, когда сам написал.

Date: 2012-11-27 08:51 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
спасибо!

Profile

sassa_nf

February 2026

S M T W T F S
1234567
891011121314
15161718192021
222324252627 28

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2026 02:24 am
Powered by Dreamwidth Studios