SlideShare a Scribd company logo
11.10.2011
Agenda
•   Intro til Clojure
    - Alf Kristian Støyle
•   Inkrementell utvikling med Clojure, Emacs og SLIME
    - Stig Henriksen
•   Clojure STM
    - Ole Christian Rynning
•   Eratosthenes' sil: et eventyr om optimalisering
    - Bodil Stokke
Clojure
• General purpose
• Lisp (List Processing)
• Funksjonelt
• Kompilert
• Dynamisk typet
Literaler
"String"     ;=>       String
Literaler
       "String"
(class "String")   ;=> java.lang.String
                                 String
Literaler
(class   "String"
         "String")     ;=>             String
                             java.lang.String
(class   #"regex")     ;=>   java.util.regex.Pattern
(class   123)          ;=>   java.lang.Integer
(class   2147483648)   ;=>   java.lang.Long
(class   123M)         ;=>   java.math.BigDecimal
(class   123N)         ;=>   clojure.lang.BigInt
(class   true)         ;=>   java.lang.Boolean
(class   false)        ;=>   java.lang.Boolean
(class   42/43)        ;=>   clojure.lang.Ratio
(class   c)           ;=>   java.lang.Character
(class   'foo)         ;=>   clojure.lang.Symbol
(class   :bar)         ;=>   clojure.lang.Keyword
(class   nil)          ;=>   nil
Collection literaler
; List
'(3 2 1)

; Vector
[1 2 3]

; Set
#{1 2 3}

; Map
{1 "one", 2 "two"‚ 3 "three"}
Collection literaler
; List
'(3 2 1) -> (list 3 2 1)

; Vector
[1 2 3] -> (vector 1 2 3)

; Set
#{1 2 3} -> (hash-set 1 2 3)

; Map
{1 "one", 2 "two"‚ 3 "three"} ->
      (hash-map 1 "one", 2 "two", 3 "three")
Dette er en liste



'(+ 1 2)
Dette er en liste



'(+ 1 2)
 ;=> (+ 1 2)
Dette er en form



(+ 1 2)
Dette er en form



(+ 1 2)
;=> 3
Dette er en form



(+ 1 2)
;=> 3
Dette er en form



(+ 1 2)
;=> 3
Dette er en form



(+ 1 2)
;=> 3
Prefiks notasjon



(+ 1 2)
;=> 3
Dette er en form



(apply + '(1 2))
      ;=> 3
Dette er en form



(apply + '(1 2))
      ;=> 3
Dette er en form



(apply + '(1 2))
      ;=> 3
Dette er en java.lang.String



                      "(+ 1 2)"
 ;=> "(+ 1 2)"
Dette er en java.lang.String
som kan konverteres til en form


(read-string "(+ 1 2)")
     ;=> (+ 1 2)
Dette er en java.lang.String
      som kan konverteres til en form
            som kan evalueres

(eval (read-string "(+ 1 2)"))
                 ;=> 3
Read-compile-evaluate
1. Tekst konverteres til forms
2. Forms blir konvertert til bytekode av
   compiler
3. Bytekode evalueres
Funksjoner


(fn [n] (* 2 n))
Funksjoner


             (fn [n] (* 2 n))
;=> #<core$eval376$fn__377 user$eval376$fn__377@5c76458f>
Funksjoner


((fn [n] (* 2 n)) 4)
Funksjoner


((fn [n] (* 2 n)) 4)
      ;=> 8
Funksjoner


(fn [n] (* 2 n))
#(* 2 %)
Funksjoner


(fn [n] (* 2 n))
#(* 2 %)
#(* 2 %1)
Funksjoner & Vars

(def times-two
  (fn [n] (* 2 n)))
;=> #'user/times-two
Funksjoner & Vars

(def times-two
  (fn [n] (* 2 n)))
;=> #'user/times-two
(times-two 4)
;=> 8
Funksjoner & Vars

(def times-two
  (fn [n] (* 2 n)))

(defn times-two
  [n] (* 2 n))
Immutable og persistente
    datastrukturer
(def my-list '(3 2 1))
; => (3 2 1)
Immutable og persistente
    datastrukturer
(def my-list '(3 2 1))
; => (3 2 1)
Immutable og persistente
    datastrukturer
(def my-list '(3 2 1))
; => (3 2 1)

(def my-other-list (cons 4 my-list))
; => (4 3 2 1)
Immutable og persistente
    datastrukturer
(def my-list '(3 2 1))
; => (3 2 1)

(def my-other-list (cons 4 my-list))
; => (4 3 2 1)
Immutable collections
; List
'(3 2 1)

; Vector
[1 2 3]

; Set
#{1 2 3}

; Map
{1 "one", 2 "two"‚ 3 "three"}
first
(first '(1 2 3))



(first [1 2 3])



(first #{1 2 3})



(first {:one "one" :two   "two"})
first
(first '(1 2 3))
;=> 1

(first [1 2 3])
;=> 1

(first #{1 2 3})
;=> 1

(first {:one "one" :two   "two"})
first
(first '(1 2 3))
;=> 1

(first [1 2 3])
;=> 1

(first #{1 2 3})
;=> 1

(first {:one "one" :two   "two"})
;=> [:one "one"]
rest
(rest '(1 2 3))



(rest [1 2 3])



(rest #{1 2 3})



(rest {:one "one" :two   "two"})
rest
(rest '(1 2 3))
;=> (2 3)

(rest [1 2 3])
;=> (2 3)

(rest #{1 2 3})
;=> (2 3)

(rest {:one "one" :two   "two"})
rest
(rest '(1 2 3))
;=> (2 3)

(rest [1 2 3])
;=> (2 3)

(rest #{1 2 3})
;=> (2 3)

(rest {:one "one" :two   "two"})
;=> ([:two "two"])
rest
(rest '())



(rest [])



(rest #{})



(rest {})
rest
(rest '())
;=> ()

(rest [])
;=> ()

(rest #{})
;=> ()

(rest {})
;=> ()
get
(get '(1 2 3) 0)



(get [1 2 3] 0)



(get #{3 2 1} 1)



(get {:one 1 :two 2 :three 3} :one)
get
(get '(1 2 3) 0)



(get [1 2 3] 0)
;=> 1

(get #{3 2 1} 1)



(get {:one 1 :two 2 :three 3} :one)
get
(get '(1 2 3) 0)



(get [1 2 3] 0)
;=> 1

(get #{3 2 1} 1)
;=> 1

(get {:one 1 :two 2 :three 3} :one)
get
(get '(1 2 3) 0)



(get [1 2 3] 0)
;=> 1

(get #{3 2 1} 1)
;=> 1

(get {:one 1 :two 2 :three 3} :one)
;=> 1
get
(get '(1 2 3) 0)
;=> nil

(get [1 2 3] 0)
;=> 1

(get #{3 2 1} 1)
;=> 1

(get {:one 1 :two 2 :three 3} :one)
;=> 1
get
(get '(1 2 3) 0 "yay")
;=> yay

(get [1 2 3] -1 "yay")
;=> yay

(get #{3 2 1} 0 "yay")
;=> yay

(get {:one 1 :two 2 :three 3} :zero "yay")
;=> yay
collections er
('(1 2 3) 0)
                funksjoner

([1 2 3] 0)



(#{3 2 1} 1)



({:one 1 :two 2 :three 3} :one)
collections er
('(1 2 3) 0)
                funksjoner

([1 2 3] 0)
;=> 1

(#{3 2 1} 1)
;=> 1

({:one 1 :two 2 :three 3} :one)
;=> 1
noen collections er
          funksjoner
('(1 2 3) 0)
;=> java.lang.ClassCastException: clojure.lang.PersistentList cannot be cast to clojure.lang.IFn




([1 2 3] 0)
;=> 1

(#{3 2 1} 1)
;=> 1

({:one 1 :two 2 :three 3} :one)
;=> 1
contains?
(contains? '(10 11 12) 10)



(contains? '[10 11 12] 1)



(contains? #{3 2 1} 1)



(contains? {:one 1 :two 2 :three 3} :one)
contains?
(contains? '(10 11 12) 10)



(contains? '[10 11 12] 1)



(contains? #{3 2 1} 1)
;=> true

(contains? {:one 1 :two 2 :three 3} :one)
contains?
(contains? '(10 11 12) 10)



(contains? '[10 11 12] 1)



(contains? #{3 2 1} 1)
;=> true

(contains? {:one 1 :two 2 :three 3} :one)
;=> true
contains?
(contains? '(10 11 12) 10)
;=> false

(contains? '[10 11 12] 1)



(contains? #{3 2 1} 1)
;=> true

(contains? {:one 1 :two 2 :three 3} :one)
;=> true
contains?
(contains? '(10 11 12) 10)
;=> false

(contains? '[10 11 12] 1)
;=> true

(contains? #{3 2 1} 1)
;=> true

(contains? {:one 1 :two 2 :three 3} :one)
;=> true
.contains
(.contains '(10 11 12) 10)



(.contains '[10 11 12] 1)



(.contains #{3 2 1} 1)



(.contains {:one 1 :two 2 :three 3} :one)
.contains
(.contains '(10 11 12) 10)
;=> true

(.contains '[10 11 12] 1)
;=> false

(.contains #{3 2 1} 1)
;=> true

(.contains {:one 1 :two 2 :three 3} :one)
.contains
(.contains '(10 11 12) 10)
;=> true

(.contains '[10 11 12] 1)
;=> false

(.contains #{3 2 1} 1)
;=> true

(.contains {:one 1 :two 2 :three 3} :one)
;=> java.lang.IllegalArgumentException: No matching method
found: contains for class clojure.lang.PersistentArrayMap
.contains
(.contains '(10 11 12) 10)
;=> true

(.contains '[10 11 12] 1)
;=> false

(.contains #{3 2 1} 1)
;=> true

(.containsKey {:one 1 :two 2 :three 3} :one)
;=> true
Java interop

(new java.util.ArrayList)
;=> #<ArrayList []>
Java interop

(new java.util.ArrayList)
;=> #<ArrayList []>

(java.util.ArrayList.)
;=> #<ArrayList []>
Java interop
(System/currentTimeMillis)
;=> 1318164613423

(.size (new java.util.ArrayList))
;=> 0

(. (new java.util.ArrayList) size)
;=> 0
Makroer
(infix (1 + 2))
;=> 3
Makroer
(infix (1 + 2))
;=> 3


(defmacro infix [form]
  (list (second form) (first form) (first (nnext form))))
;=> #'user/infix
Read-compile-evaluate
1. Tekst konverteres til forms
2. Forms blir konvertert til bytekode av
   compiler
3. Dersom compiler finner en makro,
   ekspander makro og begynn på 1.
4. Bytekode evalueres
Makroer
(infix (1 + 2))
;=> 3


(defmacro infix [form]
  (list (second form) (first form) (first (nnext form))))
;=> #'user/infix
Makroer
(infix (1 + 2))
;=> 3


(defmacro infix [form]
  (list (second form) (first form) (first (nnext form))))
;=> #'user/infix


(macroexpand '(infix (1 + 2)))
;=> (+ 1 2)
Makroer


(defmacro infix [form]
  (list (second form) (first form) (first (nnext form))))
;=> #'user/infix


(defmacro infix [form]
  `(~(second form) ~(first form) ~@(nnext form)))
;=> #'user/infix
Makroer
• The two rules of the macro club




         Programming Clojure - Stuart Halloway 2009
Makroer
• The two rules of the macro club
  1. Don’t write macros.




         Programming Clojure - Stuart Halloway 2009
Makroer
• The two rules of the macro club
  1. Don’t write macros.
  2. Only write macros if that is the only way to
     encapsulate a pattern.




         Programming Clojure - Stuart Halloway 2009
Makroer
• The two rules of the macro club
  1. Don’t write macros.
  2. Only write macros if that is the only way to
     encapsulate a pattern.
  3. You can write any macro that makes life
     easier for your callers when compared
     with an equivalent function.

         Programming Clojure - Stuart Halloway 2009
REPL demo
“late collections/funksjoner”

More Related Content

What's hot (20)

Benefits of Kotlin
Benefits of KotlinBenefits of Kotlin
Benefits of Kotlin
Benjamin Waye
 
Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)
Cody Engel
 
Why Learn Python?
Why Learn Python?Why Learn Python?
Why Learn Python?
Christine Cheung
 
QA Auotmation Java programs,theory
QA Auotmation Java programs,theory QA Auotmation Java programs,theory
QA Auotmation Java programs,theory
archana singh
 
The Ring programming language version 1.7 book - Part 35 of 196
The Ring programming language version 1.7 book - Part 35 of 196The Ring programming language version 1.7 book - Part 35 of 196
The Ring programming language version 1.7 book - Part 35 of 196
Mahmoud Samir Fayed
 
Scala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 WorldScala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 World
BTI360
 
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev FedorProgramming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Fedor Lavrentyev
 
Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)
Jonas Bonér
 
Macrobrew: Clojure macros distilled
Macrobrew: Clojure macros distilledMacrobrew: Clojure macros distilled
Macrobrew: Clojure macros distilled
abhinavomprakash10
 
Google Guava
Google GuavaGoogle Guava
Google Guava
Alexander Korotkikh
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
UC San Diego
 
Programmation fonctionnelle en JavaScript
Programmation fonctionnelle en JavaScriptProgrammation fonctionnelle en JavaScript
Programmation fonctionnelle en JavaScript
Loïc Knuchel
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collections
Myeongin Woo
 
JavaScript Fundamentals with Angular and Lodash
JavaScript Fundamentals with Angular and LodashJavaScript Fundamentals with Angular and Lodash
JavaScript Fundamentals with Angular and Lodash
Bret Little
 
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFrom Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
Fabio Collini
 
Sneaking inside Kotlin features
Sneaking inside Kotlin featuresSneaking inside Kotlin features
Sneaking inside Kotlin features
Chandra Sekhar Nayak
 
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night TurinAsync code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Fabio Collini
 
Kotlin Advanced - Apalon Kotlin Sprint Part 3
Kotlin Advanced - Apalon Kotlin Sprint Part 3Kotlin Advanced - Apalon Kotlin Sprint Part 3
Kotlin Advanced - Apalon Kotlin Sprint Part 3
Kirill Rozov
 
Madrid gug - sacando partido a las transformaciones ast de groovy
Madrid gug - sacando partido a las transformaciones ast de groovyMadrid gug - sacando partido a las transformaciones ast de groovy
Madrid gug - sacando partido a las transformaciones ast de groovy
Iván López Martín
 
Lodash js
Lodash jsLodash js
Lodash js
LearningTech
 
Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)
Cody Engel
 
QA Auotmation Java programs,theory
QA Auotmation Java programs,theory QA Auotmation Java programs,theory
QA Auotmation Java programs,theory
archana singh
 
The Ring programming language version 1.7 book - Part 35 of 196
The Ring programming language version 1.7 book - Part 35 of 196The Ring programming language version 1.7 book - Part 35 of 196
The Ring programming language version 1.7 book - Part 35 of 196
Mahmoud Samir Fayed
 
Scala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 WorldScala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 World
BTI360
 
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev FedorProgramming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Fedor Lavrentyev
 
Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)
Jonas Bonér
 
Macrobrew: Clojure macros distilled
Macrobrew: Clojure macros distilledMacrobrew: Clojure macros distilled
Macrobrew: Clojure macros distilled
abhinavomprakash10
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
UC San Diego
 
Programmation fonctionnelle en JavaScript
Programmation fonctionnelle en JavaScriptProgrammation fonctionnelle en JavaScript
Programmation fonctionnelle en JavaScript
Loïc Knuchel
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collections
Myeongin Woo
 
JavaScript Fundamentals with Angular and Lodash
JavaScript Fundamentals with Angular and LodashJavaScript Fundamentals with Angular and Lodash
JavaScript Fundamentals with Angular and Lodash
Bret Little
 
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFrom Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf Milan
Fabio Collini
 
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night TurinAsync code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Async code on kotlin: rx java or/and coroutines - Kotlin Night Turin
Fabio Collini
 
Kotlin Advanced - Apalon Kotlin Sprint Part 3
Kotlin Advanced - Apalon Kotlin Sprint Part 3Kotlin Advanced - Apalon Kotlin Sprint Part 3
Kotlin Advanced - Apalon Kotlin Sprint Part 3
Kirill Rozov
 
Madrid gug - sacando partido a las transformaciones ast de groovy
Madrid gug - sacando partido a las transformaciones ast de groovyMadrid gug - sacando partido a las transformaciones ast de groovy
Madrid gug - sacando partido a las transformaciones ast de groovy
Iván López Martín
 

Viewers also liked (11)

Clojure - JVM språket som er "multi-core ready"
Clojure - JVM språket som er "multi-core ready"Clojure - JVM språket som er "multi-core ready"
Clojure - JVM språket som er "multi-core ready"
Alf Kristian Støyle
 
Logi
LogiLogi
Logi
Yasser Lotfy
 
Clojure workshop
Clojure workshopClojure workshop
Clojure workshop
Alf Kristian Støyle
 
Bibliothcairesdufuturetfuturdesbibliothques 140617024643-phpapp02 (1)
Bibliothcairesdufuturetfuturdesbibliothques 140617024643-phpapp02 (1)Bibliothcairesdufuturetfuturdesbibliothques 140617024643-phpapp02 (1)
Bibliothcairesdufuturetfuturdesbibliothques 140617024643-phpapp02 (1)
William Jouve
 
Learning Lisp
Learning LispLearning Lisp
Learning Lisp
Alf Kristian Støyle
 
Distributed Computing - Cloud Computing and Other Buzzwords: Implications for...
Distributed Computing - Cloud Computing and Other Buzzwords: Implications for...Distributed Computing - Cloud Computing and Other Buzzwords: Implications for...
Distributed Computing - Cloud Computing and Other Buzzwords: Implications for...
Mark Conrad
 
Paralell collections in Scala
Paralell collections in ScalaParalell collections in Scala
Paralell collections in Scala
Alf Kristian Støyle
 
The account problem in Java and Clojure
The account problem in Java and ClojureThe account problem in Java and Clojure
The account problem in Java and Clojure
Alf Kristian Støyle
 
Scala 3camp 2011
Scala   3camp 2011Scala   3camp 2011
Scala 3camp 2011
Scalac
 
Scala == Effective Java
Scala == Effective JavaScala == Effective Java
Scala == Effective Java
Scalac
 
Clojure - JVM språket som er "multi-core ready"
Clojure - JVM språket som er "multi-core ready"Clojure - JVM språket som er "multi-core ready"
Clojure - JVM språket som er "multi-core ready"
Alf Kristian Støyle
 
Bibliothcairesdufuturetfuturdesbibliothques 140617024643-phpapp02 (1)
Bibliothcairesdufuturetfuturdesbibliothques 140617024643-phpapp02 (1)Bibliothcairesdufuturetfuturdesbibliothques 140617024643-phpapp02 (1)
Bibliothcairesdufuturetfuturdesbibliothques 140617024643-phpapp02 (1)
William Jouve
 
Distributed Computing - Cloud Computing and Other Buzzwords: Implications for...
Distributed Computing - Cloud Computing and Other Buzzwords: Implications for...Distributed Computing - Cloud Computing and Other Buzzwords: Implications for...
Distributed Computing - Cloud Computing and Other Buzzwords: Implications for...
Mark Conrad
 
The account problem in Java and Clojure
The account problem in Java and ClojureThe account problem in Java and Clojure
The account problem in Java and Clojure
Alf Kristian Støyle
 
Scala 3camp 2011
Scala   3camp 2011Scala   3camp 2011
Scala 3camp 2011
Scalac
 
Scala == Effective Java
Scala == Effective JavaScala == Effective Java
Scala == Effective Java
Scalac
 

Similar to Into Clojure (20)

[1062BPY12001] Data analysis with R / week 2
[1062BPY12001] Data analysis with R / week 2[1062BPY12001] Data analysis with R / week 2
[1062BPY12001] Data analysis with R / week 2
Kevin Chun-Hsien Hsu
 
R programming
R programmingR programming
R programming
Pramodkumar Jha
 
Python lecture 05
Python lecture 05Python lecture 05
Python lecture 05
Tanwir Zaman
 
ComandosDePython_ComponentesBasicosImpl.ppt
ComandosDePython_ComponentesBasicosImpl.pptComandosDePython_ComponentesBasicosImpl.ppt
ComandosDePython_ComponentesBasicosImpl.ppt
oscarJulianPerdomoCh1
 
Enter The Matrix
Enter The MatrixEnter The Matrix
Enter The Matrix
Mike Anderson
 
Clojure for Data Science
Clojure for Data ScienceClojure for Data Science
Clojure for Data Science
Mike Anderson
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Intro
thnetos
 
Clojure for Java developers - Stockholm
Clojure for Java developers - StockholmClojure for Java developers - Stockholm
Clojure for Java developers - Stockholm
Jan Kronquist
 
Arrays and function basic c programming notes
Arrays and function basic c programming notesArrays and function basic c programming notes
Arrays and function basic c programming notes
GOKULKANNANMMECLECTC
 
Basic operations by novi reandy sasmita
Basic operations by novi reandy sasmitaBasic operations by novi reandy sasmita
Basic operations by novi reandy sasmita
beasiswa
 
RNN, LSTM and Seq-2-Seq Models
RNN, LSTM and Seq-2-Seq ModelsRNN, LSTM and Seq-2-Seq Models
RNN, LSTM and Seq-2-Seq Models
Emory NLP
 
Python-Tuples
Python-TuplesPython-Tuples
Python-Tuples
Krishna Nanda
 
Thinking Functionally In Ruby
Thinking Functionally In RubyThinking Functionally In Ruby
Thinking Functionally In Ruby
Ross Lawley
 
Java script objects 1
Java script objects 1Java script objects 1
Java script objects 1
H K
 
Clojure basics
Clojure basicsClojure basics
Clojure basics
Knoldus Inc.
 
Brief intro to clojure
Brief intro to clojureBrief intro to clojure
Brief intro to clojure
Roy Rutto
 
Advanced data structure
Advanced data structureAdvanced data structure
Advanced data structure
Shakil Ahmed
 
Problem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdfProblem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdf
ebrahimbadushata00
 
Coscup2021-rust-toturial
Coscup2021-rust-toturialCoscup2021-rust-toturial
Coscup2021-rust-toturial
Wayne Tsai
 
Underscore.js
Underscore.jsUnderscore.js
Underscore.js
timourian
 
[1062BPY12001] Data analysis with R / week 2
[1062BPY12001] Data analysis with R / week 2[1062BPY12001] Data analysis with R / week 2
[1062BPY12001] Data analysis with R / week 2
Kevin Chun-Hsien Hsu
 
ComandosDePython_ComponentesBasicosImpl.ppt
ComandosDePython_ComponentesBasicosImpl.pptComandosDePython_ComponentesBasicosImpl.ppt
ComandosDePython_ComponentesBasicosImpl.ppt
oscarJulianPerdomoCh1
 
Clojure for Data Science
Clojure for Data ScienceClojure for Data Science
Clojure for Data Science
Mike Anderson
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Intro
thnetos
 
Clojure for Java developers - Stockholm
Clojure for Java developers - StockholmClojure for Java developers - Stockholm
Clojure for Java developers - Stockholm
Jan Kronquist
 
Arrays and function basic c programming notes
Arrays and function basic c programming notesArrays and function basic c programming notes
Arrays and function basic c programming notes
GOKULKANNANMMECLECTC
 
Basic operations by novi reandy sasmita
Basic operations by novi reandy sasmitaBasic operations by novi reandy sasmita
Basic operations by novi reandy sasmita
beasiswa
 
RNN, LSTM and Seq-2-Seq Models
RNN, LSTM and Seq-2-Seq ModelsRNN, LSTM and Seq-2-Seq Models
RNN, LSTM and Seq-2-Seq Models
Emory NLP
 
Thinking Functionally In Ruby
Thinking Functionally In RubyThinking Functionally In Ruby
Thinking Functionally In Ruby
Ross Lawley
 
Java script objects 1
Java script objects 1Java script objects 1
Java script objects 1
H K
 
Brief intro to clojure
Brief intro to clojureBrief intro to clojure
Brief intro to clojure
Roy Rutto
 
Advanced data structure
Advanced data structureAdvanced data structure
Advanced data structure
Shakil Ahmed
 
Problem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdfProblem 1 Show the comparison of runtime of linear search and binar.pdf
Problem 1 Show the comparison of runtime of linear search and binar.pdf
ebrahimbadushata00
 
Coscup2021-rust-toturial
Coscup2021-rust-toturialCoscup2021-rust-toturial
Coscup2021-rust-toturial
Wayne Tsai
 
Underscore.js
Underscore.jsUnderscore.js
Underscore.js
timourian
 

Recently uploaded (20)

Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
 
Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Kit-Works Team Study_아직도 Dockefile.pdf_김성호Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Wonjun Hwang
 
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
AI 3-in-1: Agents, RAG, and Local Models - Brent LasterAI 3-in-1: Agents, RAG, and Local Models - Brent Laster
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
All Things Open
 
Config 2025 presentation recap covering both days
Config 2025 presentation recap covering both daysConfig 2025 presentation recap covering both days
Config 2025 presentation recap covering both days
TrishAntoni1
 
Bepents tech services - a premier cybersecurity consulting firm
Bepents tech services - a premier cybersecurity consulting firmBepents tech services - a premier cybersecurity consulting firm
Bepents tech services - a premier cybersecurity consulting firm
Benard76
 
RTP Over QUIC: An Interesting Opportunity Or Wasted Time?
RTP Over QUIC: An Interesting Opportunity Or Wasted Time?RTP Over QUIC: An Interesting Opportunity Or Wasted Time?
RTP Over QUIC: An Interesting Opportunity Or Wasted Time?
Lorenzo Miniero
 
Unlocking Generative AI in your Web Apps
Unlocking Generative AI in your Web AppsUnlocking Generative AI in your Web Apps
Unlocking Generative AI in your Web Apps
Maximiliano Firtman
 
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
Ivano Malavolta
 
May Patch Tuesday
May Patch TuesdayMay Patch Tuesday
May Patch Tuesday
Ivanti
 
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Cyntexa
 
AsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API DesignAsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API Design
leonid54
 
AI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of DocumentsAI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of Documents
UiPathCommunity
 
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient CareAn Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
Cyntexa
 
Q1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor PresentationQ1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor Presentation
Dropbox
 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
 
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
João Esperancinha
 
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdfKit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Wonjun Hwang
 
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Raffi Khatchadourian
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
 
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
 
Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Kit-Works Team Study_아직도 Dockefile.pdf_김성호Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Kit-Works Team Study_아직도 Dockefile.pdf_김성호
Wonjun Hwang
 
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
AI 3-in-1: Agents, RAG, and Local Models - Brent LasterAI 3-in-1: Agents, RAG, and Local Models - Brent Laster
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
All Things Open
 
Config 2025 presentation recap covering both days
Config 2025 presentation recap covering both daysConfig 2025 presentation recap covering both days
Config 2025 presentation recap covering both days
TrishAntoni1
 
Bepents tech services - a premier cybersecurity consulting firm
Bepents tech services - a premier cybersecurity consulting firmBepents tech services - a premier cybersecurity consulting firm
Bepents tech services - a premier cybersecurity consulting firm
Benard76
 
RTP Over QUIC: An Interesting Opportunity Or Wasted Time?
RTP Over QUIC: An Interesting Opportunity Or Wasted Time?RTP Over QUIC: An Interesting Opportunity Or Wasted Time?
RTP Over QUIC: An Interesting Opportunity Or Wasted Time?
Lorenzo Miniero
 
Unlocking Generative AI in your Web Apps
Unlocking Generative AI in your Web AppsUnlocking Generative AI in your Web Apps
Unlocking Generative AI in your Web Apps
Maximiliano Firtman
 
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
Ivano Malavolta
 
May Patch Tuesday
May Patch TuesdayMay Patch Tuesday
May Patch Tuesday
Ivanti
 
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Cyntexa
 
AsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API DesignAsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API Design
leonid54
 
AI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of DocumentsAI Agents at Work: UiPath, Maestro & the Future of Documents
AI Agents at Work: UiPath, Maestro & the Future of Documents
UiPathCommunity
 
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient CareAn Overview of Salesforce Health Cloud & How is it Transforming Patient Care
An Overview of Salesforce Health Cloud & How is it Transforming Patient Care
Cyntexa
 
Q1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor PresentationQ1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor Presentation
Dropbox
 
How to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabberHow to Install & Activate ListGrabber - eGrabber
How to Install & Activate ListGrabber - eGrabber
eGrabber
 
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
Could Virtual Threads cast away the usage of Kotlin Coroutines - DevoxxUK2025
João Esperancinha
 
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdfKit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Kit-Works Team Study_팀스터디_김한솔_nuqs_20250509.pdf
Wonjun Hwang
 
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Challenges in Migrating Imperative Deep Learning Programs to Graph Execution:...
Raffi Khatchadourian
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
 

Into Clojure

Editor's Notes

  翻译: