2016

1-1: **Introduction**

**Everything in Haskell is PURE (function), including side effects (print, I/O such as open files, update data, …)**

**“Pure”: f (x) = a, ***regardless of ‘x’ value may change, always returns the result ‘a’*

**2.1 Function**

f a b = function f, arg a & b

sqDist (x, y ) = x^2 + y^2

main = print $ sqDist (3, 4)

dist pt = sqrt $ sqDist ptdist = sqrt . sqDist

Note: pronounce“.”as “AFTER”

id :: a -> a[Signature] # Polymorphic

id x = x[Implementation]

flop :: (a, b) -> (b, a)

flop p = = (snd p,fst p)

flop’ (x,y) = (y,x)

Example:

print $ flop (5, “Hello!”)

**Currying**

sqDist :: Double ->Double -> Double

Equivalent to: sqDist 1 arg but return a function (Double -> Double)

sqDist :: Double -> (Double -> Double)

sqDist x y = x^2 + y^2

Equiv: sqDist (x,y) # but difficult to partial application.

**Partial Application** (pass fewer args)

sqDist 0 = Double -> Double

**
sqdistfromzero** :: Double -> Double

**= sqDist 0**

sqdistfromzero

sqdistfromzero

Parallel and Concurrent Haskell: http://www.youtube.com/playlist?list=PLbgaMIhjbmEm_51-HWv9BQUXcmHYtl4sw