deniok: (Рыжий)
[personal profile] deniok
Как вам скорее всего известно, написать представителя класса типов Functor для типа эндоморфизма невозможно. Если неизвестно, то можете попробовать
newtype Endo a = Endo (a -> a)

instance Functor Endo where
   fmap f (Endo g) = Endo undefined
Даже если ваш результат сойдется по типам, законам для функтора он удовлетворять не будет.

Вот вам другой экспоненциальный тип данных, для которого, однако, написать законного представителя класса типов Functor можно:
newtype Quest b a = Quest ((a -> b) -> a)

instance Functor (Quest b) where
  fmap f (Quest g) = Quest undefined
Попробуйте сделать это, после чего ответьте на вопрос: чему равен результат такого вызова
> let Quest f = fmap succ $ Quest (\h -> h 40) in f id

Date: 2015-11-05 07:56 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
Если чо, (->) бифунктор. Т.е. есть более простой способ экспоненциально офункторить.

Date: 2015-11-05 08:39 pm (UTC)
From: [identity profile] deni-ok.livejournal.com
Бифунктор по-кметтовски ковариантен по обоим параметрам. А (->) - это профунктор. Хотя это все вопрос терминологии.

Date: 2015-11-05 08:56 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
ошибся. Профунктор, конечно

Profile

deniok: (Default)
deniok

February 2022

S M T W T F S
  12345
6789101112
13141516171819
20212223 242526
2728     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 28th, 2025 09:41 am
Powered by Dreamwidth Studios