summaryrefslogtreecommitdiff
path: root/content/digarden/pages/20210409071256-scheme.org
diff options
context:
space:
mode:
Diffstat (limited to 'content/digarden/pages/20210409071256-scheme.org')
-rw-r--r--content/digarden/pages/20210409071256-scheme.org74
1 files changed, 74 insertions, 0 deletions
diff --git a/content/digarden/pages/20210409071256-scheme.org b/content/digarden/pages/20210409071256-scheme.org
new file mode 100644
index 0000000..60ac86c
--- /dev/null
+++ b/content/digarden/pages/20210409071256-scheme.org
@@ -0,0 +1,74 @@
+:PROPERTIES:
+:ID: f9734fab-a506-4993-a2a4-7e5eef057706
+:END:
+#+title: Scheme
+
+* Scheme
+Реализации:
+- [[id:4e6cf3aa-77cc-4fae-b1d9-192bc94a4657][Guile]] (Проект GNU + встраиваемость в си)
+- [[id:40bc0c27-0137-4227-abc1-33032d39dbff][MIT Scheme]] (Стандартная схема)
+- BigLoo (C++ like)
+- [[id:ffa4066b-b6f0-46b3-9649-cb5232a32ac6][Racket]] (Python like batteries)
+- [[http://synthcode.com/scheme/chibi][Chibi Scheme]] (Встраиваемость в си, маленький размер)
+
+Разница между функциями и макросами:
+- В функции вычисляются все аргументы перед применением
+- В макросе аргументы не вычисляются
+
+Квозиквот (quaziquote):
+- Вычисляет аргументы списка
+#+begin_src scheme
+`(1 2 ,(+ 1 2)) ; => '(1 2 3)
+#+end_src
+
+Сплайсинг:
+- Разворачивает список внутрь существующего
+#+begin_src scheme
+`(1 2 ,@(map 1+ '(2 3))) ; => '(1 2 3 4)
+#+end_src
+
+[[https://www.gnu.org/software/guile/manual/html_node/Expression-Syntax.html][Guile Expression Syntax Manual]]
+
+SRFI (Scheme Request For Implementation):
+- [[id:cb0132fd-af49-49cb-a0cd-c186a9ff5e12][SRFI-9]]
+
+[[http://pages.cs.wisc.edu/~fischer/cs538.s08/lectures/Lecture14.4up.pdf][Структуры данных Scheme]]
+
+Веб-ресурсы:
+- https://schemers.org
+- https://www.staging.scheme.org/
+- https://community.schemewiki.org
+
+
+Статьи:
+- http://phyast.pitt.edu/~micheles/scheme/index.html
+
+Книги:
+- https://www.scheme.com/tspl4/
+- https://freecomputerbooks.com/langSchemeBooks.html
+- [[https://people.eecs.berkeley.edu/~bh/ss-toc2.html][Simply Scheme: Introducing Computer Science]]
+
+Научные статьи:
+- https://github.com/schemedoc/bibliography
+** Достоинства:
+- Есть стандарт и он маленький (~40 стр)
+- Есть много реализаций и стандарт просто реализовать
+** Недостатки:
+- Менее динамичен по сравнению с Common Lisp (geiser < Slime)
+** Видео:
+- [[https://youtube.com/watch?v=Kq-4nhIktes][Scheme, Guile, and Racket: an Introduction by Craig Maloney]]
+** Проекты:
+- [[https://github.com/Jobhdez/scheme-to-lambda-calculus-compiler][Scheme to Lambda Calculus compiler]]
+** Курсы
+- [[id:66fb29e8-a082-4289-be17-664b3d470a8e][SICP]]
+- [[https://www.cs.utexas.edu/ftp/garbage/cs345/schintro-v14/schintro_5.html][An introduction to Scheme and its implementation]]
+** Примеры
+- [[https://spritely.institute/static/papers/scheme-primer.html][Scheme Primer]]
+** Книги
+- [[https://doc.lagout.org/programmation/Lisp/Scheme/Teach%20Yourself%20Scheme%20in%20Fixnum%20Days%20-%20%20Dorai%20Sitaram.pdf][Teach yourself Scheme in Fixnum days]]
+- Little Schemer
+- Seasoned Schemer
+** Люди
+- Gerald Sussman
+- Guy Steele
+- Friedman \ No newline at end of file