Object-1.0: Object oriented programming for haskell using multiparameter typeclasses.

Safe HaskellNone
LanguageHaskell98

Object.Example

Documentation

data Simple

Constructors

Simple 

Fields

_simple :: Int
 

Instances

Show Simple 
Action Simple Simple_ 
(~) * anything Int => Action Simple ((:=) Simple_ anything) 
type MethodOutput Simple Simple_ = Int 
type Output Simple (Method m) = MethodOutput Simple (Method m) 
type MethodOutput Simple ((:=) Simple_ anything) = Simple 
type Output Simple ((:=) (Method m) input) = MethodOutput Simple ((:=) (Method m) input) 

data Foo x

Constructors

Foo 

Fields

_bar :: Int
 
_baz :: Char
 
_blub :: x
 

Instances

Show x => Show (Foo x) 
Action (Foo x) Blub_ 
Action (Foo x) Baz_ 
Action (Foo x) Bar_ 
(~) * value0 x0 => Action (Foo x) ((:=) Blub_ value) 
(~) * value0 Char => Action (Foo x) ((:=) Baz_ value) 
(~) * value0 Int => Action (Foo x) ((:=) Bar_ value) 
type MethodOutput (Foo x0) Blub_ = x0 
type MethodOutput (Foo x0) Baz_ = Char 
type MethodOutput (Foo x0) Bar_ = Int 
type Output (Foo x0) (Method m0) = MethodOutput (Foo x0) (Method m0) 
type MethodOutput (Foo x0) ((:=) Blub_ value) = Foo x0 
type MethodOutput (Foo x0) ((:=) Baz_ value) = Foo x0 
type MethodOutput (Foo x0) ((:=) Bar_ value) = Foo x0 
type Output (Foo x0) ((:=) (Method m0) input0) = MethodOutput (Foo x0) ((:=) (Method m0) input0) 

type Blub_ = Method (T_b, T_l, T_u, T_b)

type Baz_ = Method (T_b, T_a, T_z)

type Bar_ = Method (T_b, T_a, T_r)

type Simple_ = Method (T_s, T_i, T_m, T_p, T_l, T_e)

type family OutputMap map action

Equations

OutputMap (Map k v) (Method m) = MethodOutput (Map k v) (Method m) 
OutputMap (Map k v) [k' := v'] = Map k v 
OutputMap (Map k v) (k' := v') = Map k v 
OutputMap (Map k v) (Maybe k') = Maybe v 
OutputMap (Map k v) [k'] = [v] 
OutputMap (Map k v) k' = v 

type Size_ = Method (T_s, T_i, T_z, T_e)