소스 검색

Primitives portion done

Lily Carpenter 10 년 전
부모
커밋
e8ecedf7e6
3개의 변경된 파일260개의 추가작업 그리고 86개의 파일을 삭제
  1. 47 86
      .gitignore
  2. 5 0
      build.sh
  3. 208 0
      presentation.tex

+ 47 - 86
.gitignore

@@ -1,109 +1,70 @@
1
-## Core latex/pdflatex auxiliary files:
2
-*.aux
3
-*.lof
4
-*.log
5
-*.lot
6
-*.fls
7
-*.out
8
-*.toc
1
+# Created by https://www.gitignore.io
9 2
 
10
-## Intermediate documents:
11
-*.dvi
12
-*-converted-to.*
13
-# these rules might exclude image files for figures etc.
14
-# *.ps
15
-# *.eps
16
-# *.pdf
3
+### Emacs ###
4
+# -*- mode: gitignore; -*-
5
+*~
6
+\#*\#
7
+/.emacs.desktop
8
+/.emacs.desktop.lock
9
+*.elc
10
+auto-save-list
11
+tramp
12
+.\#*
17 13
 
18
-## Bibliography auxiliary files (bibtex/biblatex/biber):
19
-*.bbl
20
-*.bcf
21
-*.blg
22
-*-blx.aux
23
-*-blx.bib
24
-*.brf
25
-*.run.xml
14
+# Org-mode
15
+.org-id-locations
16
+*_archive
26 17
 
27
-## Build tool auxiliary files:
28
-*.fdb_latexmk
29
-*.synctex.gz
30
-*.synctex.gz(busy)
31
-*.pdfsync
18
+# flymake-mode
19
+*_flymake.*
32 20
 
33
-## Auxiliary and intermediate files from other packages:
21
+# eshell files
22
+/eshell/history
23
+/eshell/lastdir
34 24
 
35
-# algorithms
36
-*.alg
37
-*.loa
25
+# elpa packages
26
+/elpa/
38 27
 
39
-# amsthm
40
-*.thm
28
+# reftex files
29
+*.rel
41 30
 
42
-# beamer
43
-*.nav
44
-*.snm
45
-*.vrb
31
+# AUCTeX auto folder
32
+/auto/
33
+
34
+# cask packages
35
+.cask/
46 36
 
47
-#(e)ledmac/(e)ledpar
48
-*.end
49
-*.[1-9]
50
-*.[1-9][0-9]
51
-*.[1-9][0-9][0-9]
52
-*.[1-9]R
53
-*.[1-9][0-9]R
54
-*.[1-9][0-9][0-9]R
55
-*.eledsec[1-9]
56
-*.eledsec[1-9]R
57
-*.eledsec[1-9][0-9]
58
-*.eledsec[1-9][0-9]R
59
-*.eledsec[1-9][0-9][0-9]
60
-*.eledsec[1-9][0-9][0-9]R
61 37
 
62
-# glossaries
38
+### LaTeX ###
63 39
 *.acn
64 40
 *.acr
41
+*.alg
42
+*.aux
43
+*.bbl
44
+*.blg
45
+*.dvi
46
+*.fdb_latexmk
65 47
 *.glg
66 48
 *.glo
67 49
 *.gls
68
-
69
-# hyperref
70
-*.brf
71
-
72
-# listings
73
-*.lol
74
-
75
-# makeidx
76 50
 *.idx
77 51
 *.ilg
78 52
 *.ind
79 53
 *.ist
80
-
81
-# minitoc
54
+*.lof
55
+*.log
56
+*.lot
82 57
 *.maf
83 58
 *.mtc
84 59
 *.mtc0
85
-
86
-# minted
87
-*.pyg
88
-
89
-# morewrites
90
-*.mw
91
-
92
-# nomencl
60
+*.nav
93 61
 *.nlo
94
-
95
-# sagetex
96
-*.sagetex.sage
97
-*.sagetex.py
98
-*.sagetex.scmd
99
-
100
-# sympy
101
-*.sout
102
-*.sympy
103
-sympy-plots-for-*.tex/
104
-
105
-# todonotes
106
-*.tdo
107
-
108
-# xindy
62
+*.out
63
+*.pdfsync
64
+*.ps
65
+*.snm
66
+*.synctex.gz
67
+*.toc
68
+*.vrb
109 69
 *.xdy
70
+*.tdo

+ 5 - 0
build.sh

@@ -0,0 +1,5 @@
1
+#!/bin/sh
2
+
3
+# You will need to install pdflatex binary and the upquote latex package to use
4
+# the instructions for this are very environment specific
5
+pdflatex --shell-escape presentation.tex

+ 208 - 0
presentation.tex

@@ -0,0 +1,208 @@
1
+\documentclass{beamer}
2
+\title{Clojure Core}
3
+\subtitle{Primatives, collections, functions, and macros}
4
+\author{Lily Carpenter}
5
+\institute{https://gitlab.com/azrazalea/}
6
+\mode<presentation> {\usetheme{Dresden}}
7
+\date{}
8
+
9
+\usepackage[latin1]{inputenc}
10
+\usepackage{times}
11
+\usepackage[T1]{fontenc}
12
+\usepackage[english]{babel}
13
+\usepackage{hyperref}
14
+\usepackage{minted}
15
+\usepackage{upquote}
16
+
17
+\AtBeginDocument{%
18
+  \def\PYZsq{\textquotesingle}%
19
+}
20
+
21
+\begin{document}
22
+
23
+\begin{frame}
24
+  \titlepage
25
+\end{frame}
26
+
27
+\begin{frame}
28
+  \frametitle{Summary}
29
+  \tableofcontents
30
+\end{frame}
31
+
32
+\section{Primitives}
33
+\begin{frame}
34
+  \frametitle{Primitives}
35
+  Uses host language primitives
36
+  \begin{itemize}
37
+  \item{Integers}
38
+  \item{Floating points}
39
+  \item{Ratios}
40
+  \item{Strings}
41
+  \item{Regexes}
42
+  \end{itemize}
43
+\end{frame}
44
+
45
+\begin{frame}
46
+  \frametitle{Integers}
47
+  \begin{itemize}
48
+  \item{Standard java Long}
49
+  \item{Automatically upgrade to arbitrary precision BigInteger}
50
+  \item{BigInteger does not exist for ClojureScript}
51
+  \end{itemize}
52
+\end{frame}
53
+
54
+\begin{frame}[fragile]
55
+  \frametitle{Integers}
56
+  \begin{minted}{clojure}
57
+    (+ 1 1)
58
+    ;=> 2
59
+    (* 1 2)
60
+    ;=> 2
61
+    (/ 6 3)
62
+    ;=> 2
63
+    (class (+ 1 1))
64
+    ;=> java.lang.Long
65
+    ;; To the more experienced,
66
+    ;; why does this not need +'?
67
+    (class (+ 200000000000000000000
68
+              100000000000000000))
69
+    ;=> clojure.lang.BigInt
70
+  \end{minted}
71
+\end{frame}
72
+
73
+\begin{frame}
74
+  \frametitle{Floating points}
75
+  \begin{itemize}
76
+  \item{Standard java Double}
77
+  \item{Automatically upgrade to BigDecimal}
78
+  \item{BigDecimal does not exist for ClojureScript}
79
+  \end{itemize}
80
+\end{frame}
81
+
82
+\begin{frame}[fragile]
83
+  \frametitle{Floating points}
84
+  \begin{minted}{clojure}
85
+    (+ 0.1 0.1) ; leading zero required
86
+    ;=> 0.2
87
+    (* 0.1 0.1)
88
+    ;=> 0.010000000000000002
89
+    (class (* 0.1 0.1))
90
+    ;=> java.lang.Double
91
+    ;; Note the *', needed to promote doubles
92
+    (class (*' (- 2M 2e-52M) 2e1023M))
93
+    ;=> java.math.BigDecimal
94
+  \end{minted}
95
+\end{frame}
96
+
97
+\begin{frame}
98
+  \frametitle{Ratios}
99
+  \begin{itemize}
100
+  \item{Represents fractions without using floating point}
101
+  \item{Standard numeric operations work}
102
+  \item{Automatically reduces}
103
+  \item{Not in clojurescript}
104
+  \end{itemize}
105
+\end{frame}
106
+
107
+\begin{frame}[fragile]
108
+  \frametitle{Ratios}
109
+  \begin{minted}{clojure}
110
+    (/ 2 3)
111
+    ;=> 2/3
112
+    (/ 3 6)
113
+    ;=> 1/2
114
+    (+ 1/2 1/2)
115
+    ;=> 1N
116
+    (class (+ 1/2 1/2))
117
+    ;=> clojure.lang.BigInt
118
+    (+ 3/4 0.25)
119
+    ;=> 1.0
120
+    (class (+ 3/4 0.25))
121
+    ;=> java.lang.Double
122
+    (+ 3/4 1)
123
+    ;=> 7/4
124
+  \end{minted}
125
+\end{frame}
126
+
127
+
128
+\begin{frame}
129
+  \frametitle{Strings}
130
+  \begin{itemize}
131
+  \item{Java strings}
132
+  \item{Common to use Java methods to manipulate}
133
+  \end{itemize}
134
+\end{frame}
135
+
136
+\begin{frame}[fragile]
137
+  \frametitle{Strings}
138
+  \begin{minted}{clojure}
139
+    (.toUpperCase "blah")
140
+    ;=> "BLAH"
141
+    (.split "BLAH BLAH BLAH" "")
142
+    ;=> ("BLAH" "BLAH" "BLAH")
143
+  \end{minted}
144
+\end{frame}
145
+
146
+\begin{frame}
147
+  \frametitle{Regexes}
148
+  \begin{itemize}
149
+  \item{Use either re-pattern or literal syntax}
150
+  \item{Creates java.util.regex.Pattern}
151
+  \item{Use re-seq, re-find, re-matches}
152
+  \end{itemize}
153
+\end{frame}
154
+
155
+\begin{frame}[fragile]
156
+  \frametitle{Regex}
157
+  \begin{minted}{clojure}
158
+    (re-seq #"[0-9]+" "abs123def345ghi567")
159
+    ;=> ("123" "345" "567")
160
+    (re-find #"([-+]?[0-9]+)/([0-9]+)" "22/7")
161
+    ;=> ["22/7" "22" "7"]
162
+  \end{minted}
163
+\end{frame}
164
+
165
+\section{Collections}
166
+\begin{frame}
167
+  \frametitle{Collections}
168
+  \begin{itemize}
169
+  \item{Lists}
170
+  \item{Vectors}
171
+  \item{Hashes}
172
+  \item{Sets}
173
+  \end{itemize}
174
+\end{frame}
175
+
176
+\begin{frame}
177
+  \frametitle{Lists}
178
+\end{frame}
179
+
180
+\begin{frame}
181
+  \frametitle{Vectors}
182
+\end{frame}
183
+
184
+\begin{frame}
185
+  \frametitle{Hashes}
186
+\end{frame}
187
+
188
+\begin{frame}
189
+  \frametitle{Sets}
190
+\end{frame}
191
+
192
+\section{Sequences}
193
+\begin{frame}
194
+  \frametitle{Sequences}
195
+\end{frame}
196
+
197
+\section{Sequence Functions}
198
+
199
+\section{Control Flow Functions}
200
+
201
+\section{Macros}
202
+
203
+\begin{frame}
204
+  \begin{center}
205
+    \Huge Questions?
206
+  \end{center}
207
+\end{frame}
208
+\end{document}