Date: 2012-04-20 03:38 pm (UTC)
Собственно, не обязательно булевым (ох, нравится мне твоя терминология). Можно любым:
class Rigging r where
  rpure :: r
  rjoin :: r -> r -> r
data WithRigging r a = WithRigging r a
instance Functor (WithRigging r) where
  fmap h (WithRigging r a) = WithRigging r (h a)
instance Rigging r => Applicative (WithRigging r) where
  pure = WithRigging rpure
  WithRigging r1 f <*> WithRigging r2 a = WithRigging (rjoin r1 r2) (f a)

Тогда Identity - это то, что rpure является левой единицей для rjoin, Homomorphism - это более узкое свойство rjoin rpure rpure = rpure, Composition - ассоциативность rjoin (при условии, что Identity выполняется), а Interchange - коммутативность.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
No Subject Icon Selected
More info about formatting

Profile

deniok: (Default)
deniok

February 2022

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

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 9th, 2025 06:42 pm
Powered by Dreamwidth Studios