Clojure
How many zeroes does 100,000 factorial have?
What is Software Transactional Memory
Which programming language came out in 1950-60 and was symbolic (aka
dynamic aka no pointers), had first-class functions and closures, garbage
collection ?
What is tail call optimization a.k.a tail recursion ?
If functional programming is so great, why doesn't everyone use it ? (see next
page for answer)
(((lambda f: (((f)((lambda f: ((lambda z: (((f)(((f)(((f)(((f)(((f)
(z)))))))))))))))))))((((((lambda y: ((lambda F: (((F)((lambda x:
(((((((y)(y)))(F)))(x)))))))))))((lambda y: ((lambda F: (((F)((lambda x:
(((((((y)(y)))(F)))(x)))))))))))))((lambda f: ((lambda n: ((((((((((((
lambda n: (((((n)((lambda _: ((lambda t: ((lambda f: (((f)((lambda void:
(void)))))))))))))((lambda t: ((lambda f: (((t)((lambda void: (void)))))
))))))))((((((lambda n: ((lambda m: (((((m)((lambda n: ((lambda f:
((lambda z: (((((((n) ((lambda g: ((lambda h: (((h)(((g)(f)))))))))))
((lambda u: (z)))))((lambda u: (u)))))))))))))(n))))))) (n)))((lambda f:
((lambda z: (z)))))))))((lambda _: ((((lambda n: (((((n) ((lambda _: ((
lambda t: ((lambda f: (((f)((lambda void: (void))))))))))))) ((lambda t:
((lambda f: (((t)((lambda void: (void))))))))))))) ((((((lambda n:
((lambda m: (((((m)((lambda n: ((lambda f: ((lambda z: (((((((n) ((lambda
g: ((lambda h: (((h)(((g)(f)))))))))))((lambda u: (z)))))((lambda u:
(u)))))))))))))(n)))))))((lambda f: ((lambda z: (z)))))))(n)))))))))
((lambda _: ((lambda t: ((lambda f: (((f)((lambda void: (void)))))))))))
))((lambda _: ((lambda f: ((lambda z: (((f)(z)))))))))))((lambda _: (((
(((lambda n: ((lambda m: ((lambda f: ((lambda z: (((((m)(((n)(f)))))(z)
))))))))))(n)))(((f) ((((((lambda n: ((lambda m: (((((m)((lambda n:
((lambda f: ((lambda z: (((((((n) ((lambda g: ((lambda h: (((h)(((g)(f)
))))))))))((lambda u: (z)))))((lambda u: (u)))))))))))))(n)))))))(n)))
((lambda f: ((lambda z: (((f) (z))))))))))))))))))))))))(lambda x:x+1)(0)
LISP Concepts
Syntax ? What syntax ?
atoms, forms, & eval
recursion, accumulators, tail-recursion
functions
macros
Language features
Immutability
Concurrency, STM
Java Interop
Functional support (map, reduce, comp, partial)
Multimethods
Metadata, Protocols, Namespaces
Data types
Syntax ? What syntax ? Oh wait …
scalars [1, 1.0, a, "a", 22/7, 1.00000000N, 1.00000000M]
lists, vectors, maps, sets
Var, ref atoms, agents
Sequences
deftype, defrecord, defstruct
Clojure ecosystem
Clojure in the Real World
Apache Storm, Datomic, Cascalog, Incanter
Clojure in Real Companies
Clojure at Netflix deck (yes,there's a Hystrix wrapper)
Clojure at Groupon deck
Case Study
Go-Jek Driver Dispatch rewrite - Video Also see
Further Reading
LISP 1.5 Manual
http://www.clojurenewbieguide.com/
http://mishadoff.com/blog/clojure-design-patterns/
https://www.quora.com/Whos-using-Clojure-in-production
https://dev.clojure.org/display/community/Clojure+Success+Stories
Companies using clojure link
Resources
Official site : https://clojure.org/
https://clojuredocs.org/clojure.core/update-in
https://www.clojure-toolbox.com/
https://www.4clojure.com/problem/53#prob-title
Community
https://www.meetup.com/Bangalore-Clojure-User-Group/

Clojure presentation

  • 1.
  • 2.
    How many zeroesdoes 100,000 factorial have? What is Software Transactional Memory Which programming language came out in 1950-60 and was symbolic (aka dynamic aka no pointers), had first-class functions and closures, garbage collection ? What is tail call optimization a.k.a tail recursion ? If functional programming is so great, why doesn't everyone use it ? (see next page for answer)
  • 3.
    (((lambda f: (((f)((lambdaf: ((lambda z: (((f)(((f)(((f)(((f)(((f) (z)))))))))))))))))))((((((lambda y: ((lambda F: (((F)((lambda x: (((((((y)(y)))(F)))(x)))))))))))((lambda y: ((lambda F: (((F)((lambda x: (((((((y)(y)))(F)))(x)))))))))))))((lambda f: ((lambda n: (((((((((((( lambda n: (((((n)((lambda _: ((lambda t: ((lambda f: (((f)((lambda void: (void)))))))))))))((lambda t: ((lambda f: (((t)((lambda void: (void))))) ))))))))((((((lambda n: ((lambda m: (((((m)((lambda n: ((lambda f: ((lambda z: (((((((n) ((lambda g: ((lambda h: (((h)(((g)(f))))))))))) ((lambda u: (z)))))((lambda u: (u)))))))))))))(n))))))) (n)))((lambda f: ((lambda z: (z)))))))))((lambda _: ((((lambda n: (((((n) ((lambda _: (( lambda t: ((lambda f: (((f)((lambda void: (void))))))))))))) ((lambda t: ((lambda f: (((t)((lambda void: (void))))))))))))) ((((((lambda n: ((lambda m: (((((m)((lambda n: ((lambda f: ((lambda z: (((((((n) ((lambda g: ((lambda h: (((h)(((g)(f)))))))))))((lambda u: (z)))))((lambda u: (u)))))))))))))(n)))))))((lambda f: ((lambda z: (z)))))))(n))))))))) ((lambda _: ((lambda t: ((lambda f: (((f)((lambda void: (void))))))))))) ))((lambda _: ((lambda f: ((lambda z: (((f)(z)))))))))))((lambda _: ((( (((lambda n: ((lambda m: ((lambda f: ((lambda z: (((((m)(((n)(f)))))(z) ))))))))))(n)))(((f) ((((((lambda n: ((lambda m: (((((m)((lambda n: ((lambda f: ((lambda z: (((((((n) ((lambda g: ((lambda h: (((h)(((g)(f) ))))))))))((lambda u: (z)))))((lambda u: (u)))))))))))))(n)))))))(n))) ((lambda f: ((lambda z: (((f) (z))))))))))))))))))))))))(lambda x:x+1)(0)
  • 5.
    LISP Concepts Syntax ?What syntax ? atoms, forms, & eval recursion, accumulators, tail-recursion functions macros
  • 6.
    Language features Immutability Concurrency, STM JavaInterop Functional support (map, reduce, comp, partial) Multimethods Metadata, Protocols, Namespaces
  • 7.
    Data types Syntax ?What syntax ? Oh wait … scalars [1, 1.0, a, "a", 22/7, 1.00000000N, 1.00000000M] lists, vectors, maps, sets Var, ref atoms, agents Sequences deftype, defrecord, defstruct
  • 8.
  • 9.
    Clojure in theReal World Apache Storm, Datomic, Cascalog, Incanter Clojure in Real Companies Clojure at Netflix deck (yes,there's a Hystrix wrapper) Clojure at Groupon deck Case Study Go-Jek Driver Dispatch rewrite - Video Also see
  • 10.
    Further Reading LISP 1.5Manual http://www.clojurenewbieguide.com/ http://mishadoff.com/blog/clojure-design-patterns/ https://www.quora.com/Whos-using-Clojure-in-production https://dev.clojure.org/display/community/Clojure+Success+Stories Companies using clojure link
  • 11.
    Resources Official site :https://clojure.org/ https://clojuredocs.org/clojure.core/update-in https://www.clojure-toolbox.com/ https://www.4clojure.com/problem/53#prob-title Community https://www.meetup.com/Bangalore-Clojure-User-Group/