- Thompson. Type Theory & Functional Programming
- Nederpelt, Geuvers. Type Theory and Formal Proof
- Pierce. Types and Programming Languages
- Pierce. Advanced Topics in Types and Programming Languages
- Bar, Wells. Category Theory For Computing Science
- Pierce. Basic Category Theory for Computer Scientists
- Mac Lane. Categories for the Working Mathematician
- Blackburn. Handbook of Modal Logic
- Girard. Proofs and Types
- Harper. Practical Foundations for Programming Languages
data Tree a = Empty | Node (Tree a) a (Tree a) | |
deriving (Show) | |
fromList :: [a] -> Tree a | |
fromList xs | |
| null xs = Empty | |
| otherwise = Node (fromList x1) x (fromList x2) | |
where (x1, x:x2) = splitAt (length xs `div` 2) xs | |
inorder :: Tree a -> [a] |
TensorFlow is Google's open source library for numerical computation. All computations are represented as Data Flow Graphs. The Nodes in the graph represent operations and Edges represent the data-communication between nodes.
Every computation is a graph. That is, we first create a graph that represent our computation. Then we run/evaluate that graph. The evaluation always happen within a Session
import tensorflow as tf
x = tf.random_uniform([10])
print(x)
My notes on Lambda Calculus.
The syntax of the lambda-calculus comprises just three sorts of terms.
- A variable
x
by itself is a term; - The abstraction of a variable
x
from a termt1
, writtenλx.t1
, is a term; - And the application of a term
t1
to another termt2
, writtent1 t2
, is a term.
These ways of forming terms are summarized in the following grammar.
There are many people who will say there are 5 design principles. Well, I believed that too for some time. There are a lot more design principles that you will be considering while designing an application/framework. But these are the few principles that you MUST adhere to in any application/framework class design.
These are the Principles of Object Oriented Class Design popularly known as the SOLID Principles.
- The Single Responsibility Principle [SRP]
- The Open/Closed Principle [OCP]
- The Liskov Substitution Principle [LSP]
- The Interface Segregation Principle [ISP]
Some of the complexity in softwares are inherent in the problem domain, like complex rules of business. But others are just man-made.
A state is a collection of information held (at any time) by a part of the system that is accessible by other parts of the system. When different parts of the system can access and update program state, it becomes harder to coordinate between them and keep the system in a consistent state. This makes system hard to understand, modify, extend and to test comprehensively.