presently 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. checksums.yaml +7 -0
  2. data/bin/presently +13 -0
  3. data/lib/presently/application.rb +104 -0
  4. data/lib/presently/clock.rb +77 -0
  5. data/lib/presently/display_view.rb +73 -0
  6. data/lib/presently/environment/application.rb +62 -0
  7. data/lib/presently/page.rb +38 -0
  8. data/lib/presently/page.xrb +31 -0
  9. data/lib/presently/presentation.rb +72 -0
  10. data/lib/presently/presentation_controller.rb +181 -0
  11. data/lib/presently/presenter_view.rb +264 -0
  12. data/lib/presently/slide.rb +148 -0
  13. data/lib/presently/slide_view.rb +92 -0
  14. data/lib/presently/state.rb +66 -0
  15. data/lib/presently/version.rb +9 -0
  16. data/lib/presently.rb +9 -0
  17. data/license.md +21 -0
  18. data/public/_components/@socketry/syntax/Syntax/CodeElement.js +337 -0
  19. data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
  20. data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
  21. data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
  22. data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
  23. data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
  24. data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
  25. data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
  26. data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
  27. data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
  28. data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
  29. data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
  30. data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
  31. data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
  32. data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
  33. data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
  34. data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
  35. data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
  36. data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
  37. data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
  38. data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
  39. data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
  40. data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
  41. data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
  42. data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
  43. data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
  44. data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
  45. data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
  46. data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
  47. data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
  48. data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
  49. data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
  50. data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
  51. data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
  52. data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
  53. data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
  54. data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
  55. data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
  56. data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
  57. data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
  58. data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
  59. data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
  60. data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
  61. data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
  62. data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
  63. data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
  64. data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
  65. data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
  66. data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
  67. data/public/_components/@socketry/syntax/Syntax.js +356 -0
  68. data/public/_components/@socketry/syntax/bin/syntax-ast.js +42 -0
  69. data/public/_components/@socketry/syntax/examples/_template.html +53 -0
  70. data/public/_components/@socketry/syntax/examples/apache.html +72 -0
  71. data/public/_components/@socketry/syntax/examples/applescript.html +72 -0
  72. data/public/_components/@socketry/syntax/examples/assembly.html +74 -0
  73. data/public/_components/@socketry/syntax/examples/bash.html +90 -0
  74. data/public/_components/@socketry/syntax/examples/basic.html +87 -0
  75. data/public/_components/@socketry/syntax/examples/c.html +141 -0
  76. data/public/_components/@socketry/syntax/examples/clang.html +202 -0
  77. data/public/_components/@socketry/syntax/examples/csharp.html +110 -0
  78. data/public/_components/@socketry/syntax/examples/css-colors.html +179 -0
  79. data/public/_components/@socketry/syntax/examples/custom-theme.html +155 -0
  80. data/public/_components/@socketry/syntax/examples/diff.html +142 -0
  81. data/public/_components/@socketry/syntax/examples/examples.css +216 -0
  82. data/public/_components/@socketry/syntax/examples/go.html +413 -0
  83. data/public/_components/@socketry/syntax/examples/haskell.html +373 -0
  84. data/public/_components/@socketry/syntax/examples/html.html +316 -0
  85. data/public/_components/@socketry/syntax/examples/index.html +97 -0
  86. data/public/_components/@socketry/syntax/examples/io.html +552 -0
  87. data/public/_components/@socketry/syntax/examples/java.html +786 -0
  88. data/public/_components/@socketry/syntax/examples/javascript.html +199 -0
  89. data/public/_components/@socketry/syntax/examples/json.html +150 -0
  90. data/public/_components/@socketry/syntax/examples/lisp.html +476 -0
  91. data/public/_components/@socketry/syntax/examples/lua.html +737 -0
  92. data/public/_components/@socketry/syntax/examples/markdown.html +121 -0
  93. data/public/_components/@socketry/syntax/examples/mixed.html +306 -0
  94. data/public/_components/@socketry/syntax/examples/nginx.html +554 -0
  95. data/public/_components/@socketry/syntax/examples/ocaml.html +596 -0
  96. data/public/_components/@socketry/syntax/examples/pascal.html +762 -0
  97. data/public/_components/@socketry/syntax/examples/perl5.html +488 -0
  98. data/public/_components/@socketry/syntax/examples/php-script.html +142 -0
  99. data/public/_components/@socketry/syntax/examples/php.html +95 -0
  100. data/public/_components/@socketry/syntax/examples/plain.html +222 -0
  101. data/public/_components/@socketry/syntax/examples/protobuf.html +405 -0
  102. data/public/_components/@socketry/syntax/examples/python.html +82 -0
  103. data/public/_components/@socketry/syntax/examples/readme.md +79 -0
  104. data/public/_components/@socketry/syntax/examples/ruby.html +58 -0
  105. data/public/_components/@socketry/syntax/examples/scala.html +41 -0
  106. data/public/_components/@socketry/syntax/examples/smalltalk.html +436 -0
  107. data/public/_components/@socketry/syntax/examples/sql.html +373 -0
  108. data/public/_components/@socketry/syntax/examples/super-collider.html +55 -0
  109. data/public/_components/@socketry/syntax/examples/swift.html +176 -0
  110. data/public/_components/@socketry/syntax/examples/wrap-demo.html +103 -0
  111. data/public/_components/@socketry/syntax/examples/xml.html +112 -0
  112. data/public/_components/@socketry/syntax/examples/xrb.html +37 -0
  113. data/public/_components/@socketry/syntax/examples/yaml.html +72 -0
  114. data/public/_components/@socketry/syntax/license.md +21 -0
  115. data/public/_components/@socketry/syntax/package-lock.json +834 -0
  116. data/public/_components/@socketry/syntax/package.json +43 -0
  117. data/public/_components/@socketry/syntax/readme.md +162 -0
  118. data/public/_components/@socketry/syntax/test/Syntax/CodeElement.js +306 -0
  119. data/public/_components/@socketry/syntax/test/Syntax/ErrorHandling.js +85 -0
  120. data/public/_components/@socketry/syntax/test/Syntax/Language/apache.js +153 -0
  121. data/public/_components/@socketry/syntax/test/Syntax/Language/applescript.js +198 -0
  122. data/public/_components/@socketry/syntax/test/Syntax/Language/assembly.js +209 -0
  123. data/public/_components/@socketry/syntax/test/Syntax/Language/bash-script.js +225 -0
  124. data/public/_components/@socketry/syntax/test/Syntax/Language/bash.js +162 -0
  125. data/public/_components/@socketry/syntax/test/Syntax/Language/basic.js +265 -0
  126. data/public/_components/@socketry/syntax/test/Syntax/Language/clang.js +390 -0
  127. data/public/_components/@socketry/syntax/test/Syntax/Language/csharp.js +436 -0
  128. data/public/_components/@socketry/syntax/test/Syntax/Language/css.js +431 -0
  129. data/public/_components/@socketry/syntax/test/Syntax/Language/diff.js +206 -0
  130. data/public/_components/@socketry/syntax/test/Syntax/Language/go.js +386 -0
  131. data/public/_components/@socketry/syntax/test/Syntax/Language/haskell.js +454 -0
  132. data/public/_components/@socketry/syntax/test/Syntax/Language/html.js +111 -0
  133. data/public/_components/@socketry/syntax/test/Syntax/Language/io.js +229 -0
  134. data/public/_components/@socketry/syntax/test/Syntax/Language/java.js +362 -0
  135. data/public/_components/@socketry/syntax/test/Syntax/Language/javascript.js +101 -0
  136. data/public/_components/@socketry/syntax/test/Syntax/Language/json.js +101 -0
  137. data/public/_components/@socketry/syntax/test/Syntax/Language/lisp.js +224 -0
  138. data/public/_components/@socketry/syntax/test/Syntax/Language/lua.js +307 -0
  139. data/public/_components/@socketry/syntax/test/Syntax/Language/markdown.js +163 -0
  140. data/public/_components/@socketry/syntax/test/Syntax/Language/nginx.js +267 -0
  141. data/public/_components/@socketry/syntax/test/Syntax/Language/ocaml.js +299 -0
  142. data/public/_components/@socketry/syntax/test/Syntax/Language/pascal.js +311 -0
  143. data/public/_components/@socketry/syntax/test/Syntax/Language/perl5.js +333 -0
  144. data/public/_components/@socketry/syntax/test/Syntax/Language/php-script.js +197 -0
  145. data/public/_components/@socketry/syntax/test/Syntax/Language/php.js +92 -0
  146. data/public/_components/@socketry/syntax/test/Syntax/Language/plain.js +327 -0
  147. data/public/_components/@socketry/syntax/test/Syntax/Language/protobuf.js +294 -0
  148. data/public/_components/@socketry/syntax/test/Syntax/Language/python.js +213 -0
  149. data/public/_components/@socketry/syntax/test/Syntax/Language/ruby.js +70 -0
  150. data/public/_components/@socketry/syntax/test/Syntax/Language/scala.js +75 -0
  151. data/public/_components/@socketry/syntax/test/Syntax/Language/smalltalk.js +223 -0
  152. data/public/_components/@socketry/syntax/test/Syntax/Language/sql.js +281 -0
  153. data/public/_components/@socketry/syntax/test/Syntax/Language/super-collider.js +66 -0
  154. data/public/_components/@socketry/syntax/test/Syntax/Language/swift.js +71 -0
  155. data/public/_components/@socketry/syntax/test/Syntax/Language/xml.js +170 -0
  156. data/public/_components/@socketry/syntax/test/Syntax/Language/xrb.js +57 -0
  157. data/public/_components/@socketry/syntax/test/Syntax/Language/yaml.js +123 -0
  158. data/public/_components/@socketry/syntax/test/Syntax/Language.js +62 -0
  159. data/public/_components/@socketry/syntax/test/Syntax/Match.js +40 -0
  160. data/public/_components/@socketry/syntax/test/Syntax/Rule.js +251 -0
  161. data/public/_components/@socketry/syntax/test/Syntax.js +38 -0
  162. data/public/_components/@socketry/syntax/test/helpers/ast-matcher.js +90 -0
  163. data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
  164. data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
  165. data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
  166. data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
  167. data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
  168. data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
  169. data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
  170. data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
  171. data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
  172. data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
  173. data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
  174. data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
  175. data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
  176. data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
  177. data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
  178. data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
  179. data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
  180. data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
  181. data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
  182. data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
  183. data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
  184. data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
  185. data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
  186. data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
  187. data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
  188. data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
  189. data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
  190. data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
  191. data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
  192. data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
  193. data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
  194. data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
  195. data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
  196. data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
  197. data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
  198. data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
  199. data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
  200. data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
  201. data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
  202. data/public/_components/@socketry/syntax/themes/theming.md +233 -0
  203. data/public/_components/@socketry/syntax/update-examples.js +135 -0
  204. data/public/_static/index.css +593 -0
  205. data/public/application.js +147 -0
  206. data/readme.md +69 -0
  207. data/releases.md +3 -0
  208. data/templates/code.xrb +12 -0
  209. data/templates/default.xrb +5 -0
  210. data/templates/image.xrb +8 -0
  211. data/templates/section.xrb +5 -0
  212. data/templates/title.xrb +8 -0
  213. data/templates/translation.xrb +8 -0
  214. data/templates/two_column.xrb +8 -0
  215. metadata +280 -0
@@ -0,0 +1,476 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Lisp Examples - @socketry/syntax</title>
7
+ <link rel="stylesheet" href="examples.css">
8
+ </head>
9
+ <body>
10
+ <header>
11
+ <h1>Lisp Examples</h1>
12
+ <p class="subtitle">Lisp syntax highlighting</p>
13
+ </header>
14
+
15
+ <nav>
16
+ <a href="index.html">Back to Examples</a>
17
+ </nav>
18
+
19
+ <h1>Lisp Code Example</h1>
20
+
21
+ <p>This is a general syntax for Lisp-like languages including Common Lisp, Scheme, Clojure, and others.</p>
22
+
23
+ <div class="example">
24
+ <h2>Basic Expressions</h2>
25
+ <p class="description">Example:</p>
26
+
27
+ <pre><code class="language-lisp">; Comments start with semicolon
28
+ ;; Double semicolon for inline comments
29
+ ;;; Triple semicolon for section headers
30
+
31
+ ; Arithmetic
32
+ (+ 1 2) ; => 3
33
+ (- 10 5) ; => 5
34
+ (* 3 4) ; => 12
35
+ (/ 20 4) ; => 5
36
+
37
+ ; Nested expressions
38
+ (+ (* 2 3) (- 5 1)) ; => 10
39
+
40
+ ; Comparison
41
+ (= 5 5) ; => #t
42
+ (< 3 5) ; => #t
43
+ (> 10 2) ; => #t
44
+ (<= 5 5) ; => #t
45
+ (>= 10 5) ; => #t
46
+ </code></pre>
47
+
48
+ <div class="example">
49
+ <h2>Variables and Definitions</h2>
50
+ <p class="description">Example:</p>
51
+
52
+ <pre><code class="language-lisp">; Define a variable (Scheme)
53
+ (define x 42)
54
+ (define pi 3.14159)
55
+ (define name "Alice")
56
+
57
+ ; Set variable (Common Lisp)
58
+ (setq x 100)
59
+ (setq y 200)
60
+
61
+ ; Let bindings - local variables
62
+ (let ((x 10)
63
+ (y 20))
64
+ (+ x y)) ; => 30
65
+
66
+ ; Let* - sequential bindings
67
+ (let* ((x 5)
68
+ (y (* x 2)))
69
+ y) ; => 10
70
+ </code></pre>
71
+
72
+ <div class="example">
73
+ <h2>Functions</h2>
74
+ <p class="description">Example:</p>
75
+
76
+ <pre><code class="language-lisp">; Define a function (Scheme)
77
+ (define (square x)
78
+ (* x x))
79
+
80
+ (square 5) ; => 25
81
+
82
+ ; Define a function (Common Lisp)
83
+ (defun square (x)
84
+ (* x x))
85
+
86
+ ; Function with multiple parameters
87
+ (define (add x y)
88
+ (+ x y))
89
+
90
+ (add 3 4) ; => 7
91
+
92
+ ; Recursive function
93
+ (define (factorial n)
94
+ (if (<= n 1)
95
+ 1
96
+ (* n (factorial (- n 1)))))
97
+
98
+ (factorial 5) ; => 120
99
+
100
+ ; Fibonacci
101
+ (define (fib n)
102
+ (cond
103
+ ((= n 0) 0)
104
+ ((= n 1) 1)
105
+ (else (+ (fib (- n 1))
106
+ (fib (- n 2))))))
107
+
108
+ (fib 10) ; => 55
109
+ </code></pre>
110
+
111
+ <div class="example">
112
+ <h2>Lambda Expressions</h2>
113
+ <p class="description">Example:</p>
114
+
115
+ <pre><code class="language-lisp">; Anonymous function
116
+ (lambda (x) (* x x))
117
+
118
+ ; Using lambda directly
119
+ ((lambda (x) (* x x)) 5) ; => 25
120
+
121
+ ; Lambda with multiple parameters
122
+ ((lambda (x y) (+ x y)) 3 4) ; => 7
123
+
124
+ ; Assigning lambda to variable
125
+ (define square (lambda (x) (* x x)))
126
+
127
+ ; Higher-order function
128
+ (define (apply-twice f x)
129
+ (f (f x)))
130
+
131
+ (apply-twice (lambda (x) (* x 2)) 5) ; => 20
132
+ </code></pre>
133
+
134
+ <div class="example">
135
+ <h2>Conditionals</h2>
136
+ <p class="description">Example:</p>
137
+
138
+ <pre><code class="language-lisp">; if expression
139
+ (if (> x 0)
140
+ "positive"
141
+ "not positive")
142
+
143
+ ; Nested if
144
+ (if (< x 0)
145
+ "negative"
146
+ (if (> x 0)
147
+ "positive"
148
+ "zero"))
149
+
150
+ ; cond - multiple conditions
151
+ (cond
152
+ ((< x 0) "negative")
153
+ ((> x 0) "positive")
154
+ (else "zero"))
155
+
156
+ ; when - single branch
157
+ (when (> x 0)
158
+ (display "positive")
159
+ (newline))
160
+
161
+ ; unless
162
+ (unless (= x 0)
163
+ (display "non-zero"))
164
+ </code></pre>
165
+
166
+ <div class="example">
167
+ <h2>Lists</h2>
168
+ <p class="description">Example:</p>
169
+
170
+ <pre><code class="language-lisp">; Empty list
171
+ '()
172
+ (list)
173
+
174
+ ; List with elements
175
+ '(1 2 3 4 5)
176
+ (list 1 2 3 4 5)
177
+
178
+ ; cons - construct list
179
+ (cons 1 '(2 3 4)) ; => (1 2 3 4)
180
+
181
+ ; car - first element
182
+ (car '(1 2 3)) ; => 1
183
+
184
+ ; cdr - rest of list
185
+ (cdr '(1 2 3)) ; => (2 3)
186
+
187
+ ; List operations
188
+ (length '(1 2 3 4)) ; => 4
189
+ (append '(1 2) '(3 4)) ; => (1 2 3 4)
190
+ (reverse '(1 2 3)) ; => (3 2 1)
191
+
192
+ ; nth element
193
+ (nth 0 '(a b c)) ; => a
194
+ (nth 2 '(a b c)) ; => c
195
+ </code></pre>
196
+
197
+ <div class="example">
198
+ <h2>Higher-Order Functions</h2>
199
+ <p class="description">Example:</p>
200
+
201
+ <pre><code class="language-lisp">; map - apply function to each element
202
+ (map (lambda (x) (* x 2)) '(1 2 3 4))
203
+ ; => (2 4 6 8)
204
+
205
+ ; filter - select elements matching predicate
206
+ (filter (lambda (x) (> x 5)) '(3 7 2 9 4 10))
207
+ ; => (7 9 10)
208
+
209
+ ; reduce/fold - combine elements
210
+ (reduce + '(1 2 3 4 5)) ; => 15
211
+
212
+ ; Apply function to list of arguments
213
+ (apply + '(1 2 3 4)) ; => 10
214
+ </code></pre>
215
+
216
+ <div class="example">
217
+ <h2>Quoted Expressions</h2>
218
+ <p class="description">Example:</p>
219
+
220
+ <pre><code class="language-lisp">; Quote - prevent evaluation
221
+ 'x ; => x (symbol)
222
+ '(1 2 3) ; => (1 2 3) (list)
223
+ '(+ 1 2) ; => (+ 1 2) (not 3)
224
+
225
+ ; quote function
226
+ (quote x)
227
+ (quote (1 2 3))
228
+
229
+ ; Backquote and unquote
230
+ `(1 2 ,(+ 1 2)) ; => (1 2 3)
231
+ `(a b ,x) ; => (a b 42) if x=42
232
+
233
+ ; Unquote-splicing
234
+ `(1 ,@(list 2 3) 4) ; => (1 2 3 4)
235
+ </code></pre>
236
+
237
+ <div class="example">
238
+ <h2>Strings</h2>
239
+ <p class="description">Example:</p>
240
+
241
+ <pre><code class="language-lisp">; String literals
242
+ "Hello, World!"
243
+ "Multi-line
244
+ string"
245
+
246
+ ; String concatenation
247
+ (string-append "Hello" " " "World") ; => "Hello World"
248
+
249
+ ; String length
250
+ (string-length "Hello") ; => 5
251
+
252
+ ; Substring
253
+ (substring "Hello World" 0 5) ; => "Hello"
254
+
255
+ ; String comparison
256
+ (string=? "abc" "abc") ; => #t
257
+ (string<? "abc" "xyz") ; => #t
258
+
259
+ ; Escape sequences
260
+ "Say \"Hello\""
261
+ "Line 1\nLine 2"
262
+ "Tab\there"
263
+ </code></pre>
264
+
265
+ <div class="example">
266
+ <h2>Numbers</h2>
267
+ <p class="description">Example:</p>
268
+
269
+ <pre><code class="language-lisp">; Integers
270
+ 42
271
+ -17
272
+ 0
273
+
274
+ ; Floating point
275
+ 3.14
276
+ -2.5
277
+ 1.0e10
278
+
279
+ ; Hexadecimal
280
+ 0xFF
281
+ 0x1A2B
282
+
283
+ ; Fractions (Scheme)
284
+ 1/2
285
+ 3/4
286
+
287
+ ; Complex numbers (Scheme)
288
+ 3+4i
289
+
290
+ ; Number predicates
291
+ (number? 42) ; => #t
292
+ (integer? 3.5) ; => #f
293
+ (even? 4) ; => #t
294
+ (odd? 5) ; => #t
295
+ (zero? 0) ; => #t
296
+ (positive? 5) ; => #t
297
+ (negative? -3) ; => #t
298
+ </code></pre>
299
+
300
+ <div class="example">
301
+ <h2>Boolean and Logic</h2>
302
+ <p class="description">Example:</p>
303
+
304
+ <pre><code class="language-lisp">; Boolean values
305
+ #t ; true
306
+ #f ; false
307
+
308
+ ; Logical operations
309
+ (and #t #t) ; => #t
310
+ (and #t #f) ; => #f
311
+ (or #f #t) ; => #t
312
+ (or #f #f) ; => #f
313
+ (not #t) ; => #f
314
+ (not #f) ; => #t
315
+
316
+ ; Short-circuit evaluation
317
+ (and (> x 0) (< x 10))
318
+ (or (= x 0) (= x 1))
319
+ </code></pre>
320
+
321
+ <div class="example">
322
+ <h2>Type Predicates</h2>
323
+ <p class="description">Example:</p>
324
+
325
+ <pre><code class="language-lisp">; Check types
326
+ (number? 42) ; => #t
327
+ (string? "hello") ; => #t
328
+ (symbol? 'x) ; => #t
329
+ (list? '(1 2 3)) ; => #t
330
+ (pair? '(1 . 2)) ; => #t
331
+ (null? '()) ; => #t
332
+ (boolean? #t) ; => #t
333
+ (procedure? +) ; => #t
334
+ </code></pre>
335
+
336
+ <div class="example">
337
+ <h2>Associations and Hash Tables</h2>
338
+ <p class="description">Example:</p>
339
+
340
+ <pre><code class="language-lisp">; Association lists
341
+ (define alist '((name . "Alice") (age . 30)))
342
+
343
+ (assoc 'name alist) ; => (name . "Alice")
344
+ (cdr (assoc 'age alist)) ; => 30
345
+
346
+ ; Add association
347
+ (cons '(city . "NYC") alist)
348
+
349
+ ; Hash tables (Common Lisp)
350
+ (setq ht (make-hash-table))
351
+ (setf (gethash 'name ht) "Alice")
352
+ (setf (gethash 'age ht) 30)
353
+ (gethash 'name ht) ; => "Alice"
354
+ </code></pre>
355
+
356
+ <div class="example">
357
+ <h2>Loops and Iteration</h2>
358
+ <p class="description">Example:</p>
359
+
360
+ <pre><code class="language-lisp">; Recursive loop
361
+ (define (sum-list lst)
362
+ (if (null? lst)
363
+ 0
364
+ (+ (car lst) (sum-list (cdr lst)))))
365
+
366
+ ; Named let (Scheme)
367
+ (let loop ((i 0) (sum 0))
368
+ (if (< i 10)
369
+ (loop (+ i 1) (+ sum i))
370
+ sum))
371
+
372
+ ; dolist (Common Lisp)
373
+ (dolist (x '(1 2 3 4))
374
+ (print (* x x)))
375
+
376
+ ; dotimes (Common Lisp)
377
+ (dotimes (i 10)
378
+ (print i))
379
+
380
+ ; do loop (Scheme)
381
+ (do ((i 0 (+ i 1))
382
+ (sum 0 (+ sum i)))
383
+ ((>= i 10) sum))
384
+ </code></pre>
385
+
386
+ <div class="example">
387
+ <h2>Macros (Advanced)</h2>
388
+ <p class="description">Example:</p>
389
+
390
+ <pre><code class="language-lisp">; Simple macro (Scheme)
391
+ (define-syntax when
392
+ (syntax-rules ()
393
+ ((when test body ...)
394
+ (if test
395
+ (begin body ...)))))
396
+
397
+ ; Using the macro
398
+ (when (> x 0)
399
+ (display "positive")
400
+ (newline))
401
+
402
+ ; Macro with pattern matching
403
+ (define-syntax for
404
+ (syntax-rules (in)
405
+ ((for var in list body ...)
406
+ (map (lambda (var) body ...) list))))
407
+
408
+ ; defmacro (Common Lisp)
409
+ (defmacro when (test &rest body)
410
+ `(if ,test
411
+ (progn ,@body)))
412
+ </code></pre>
413
+
414
+ <div class="example">
415
+ <h2>Advanced Examples</h2>
416
+ <p class="description">Example:</p>
417
+
418
+ <pre><code class="language-lisp">; Quicksort
419
+ (define (quicksort lst)
420
+ (if (null? lst)
421
+ '()
422
+ (let ((pivot (car lst))
423
+ (rest (cdr lst)))
424
+ (append
425
+ (quicksort (filter (lambda (x) (< x pivot)) rest))
426
+ (list pivot)
427
+ (quicksort (filter (lambda (x) (>= x pivot)) rest))))))
428
+
429
+ (quicksort '(3 1 4 1 5 9 2 6)) ; => (1 1 2 3 4 5 6 9)
430
+
431
+ ; Map-reduce pattern
432
+ (define (map-reduce map-fn reduce-fn init lst)
433
+ (reduce reduce-fn
434
+ init
435
+ (map map-fn lst)))
436
+
437
+ ; Binary tree operations
438
+ (define (make-tree value left right)
439
+ (list value left right))
440
+
441
+ (define (tree-value tree) (car tree))
442
+ (define (tree-left tree) (cadr tree))
443
+ (define (tree-right tree) (caddr tree))
444
+
445
+ (define (tree-insert tree value)
446
+ (if (null? tree)
447
+ (make-tree value '() '())
448
+ (let ((root (tree-value tree)))
449
+ (cond
450
+ ((< value root)
451
+ (make-tree root
452
+ (tree-insert (tree-left tree) value)
453
+ (tree-right tree)))
454
+ ((> value root)
455
+ (make-tree root
456
+ (tree-left tree)
457
+ (tree-insert (tree-right tree) value)))
458
+ (else tree)))))
459
+
460
+ ; Y-combinator (fixed-point combinator)
461
+ (define Y
462
+ (lambda (f)
463
+ ((lambda (x) (f (lambda (y) ((x x) y))))
464
+ (lambda (x) (f (lambda (y) ((x x) y)))))))
465
+
466
+ ; Factorial using Y-combinator
467
+ ((Y (lambda (fact)
468
+ (lambda (n)
469
+ (if (<= n 1)
470
+ 1
471
+ (* n (fact (- n 1)))))))
472
+ 5) ; => 120
473
+ </code></pre>
474
+
475
+ </body>
476
+ </html>