Object-Oriented has 2 weaknesses for Concurrency and Parallel programming :
- Hidden Mutating States;
- Data Sharing.
Category Theory (CT): a higher abstraction of all different Math structures : Set , Logic, Computing math, Algebra… =>
Our brain works by: 1) Abstraction 2) Composition 3) Identity (to identify)
What is a Category ?
- Morphism (Arrow)
2) Composition: Associative
- Small Category with “Set” as object.
- Large Category without Set as object.
- Morphism is a Set : “Hom” Set.
Example in Programming:
- Object : Types Set
- Morphism : Function “Sin” converts degree to R:
Note: We just look at the Category “Types Set” from external Macroview, “forget ” what it contains, we only know the “composition” (Arrows) between the Category “Type Set”, also “forget” what these Arrows (sin,cosin, tgt, etc) actually are, we only study these arrows’ behavior (Associativity).
Set: A function is
- Surjective (greek: epic / epimorphism 满射),
- Injective (greek : monic / monomorphism 单射)
g 。f = h 。f
=> g = h (Right Cancellation )
f 。g = f 。h
=> g = h (Left cancellation)
NOT Necessary !! Reason ( click here):
In Haskell, 2 foundation Types: Void, Unit
Void = False
Unit ( ) = True
Functions : absurd, unit
absurd :: Void -> a (a = anything)
unit :: a -> ()
[to be continued 3.1 ….]