1 | :PROPERTIES:
|
---|
2 | :ID: f9734fab-a506-4993-a2a4-7e5eef057706
|
---|
3 | :END:
|
---|
4 | #+title: Scheme
|
---|
5 | * Scheme
|
---|
6 | Реализации:
|
---|
7 | - [[id:4e6cf3aa-77cc-4fae-b1d9-192bc94a4657][Guile]] (Проект GNU + встраиваемость в си)
|
---|
8 | - [[id:40bc0c27-0137-4227-abc1-33032d39dbff][MIT Scheme]] (Стандартная схема)
|
---|
9 | - [[id:967b00a0-2706-406c-ac1e-3aaaaf44cd39][BigLoo]] (C++ like)
|
---|
10 | - [[id:ffa4066b-b6f0-46b3-9649-cb5232a32ac6][Racket]] (Python like batteries)
|
---|
11 | - [[http://synthcode.com/scheme/chibi][Chibi Scheme]] (Встраиваемость в си, маленький размер)
|
---|
12 |
|
---|
13 | Разница между функциями и макросами:
|
---|
14 | - В функции вычисляются все аргументы перед применением
|
---|
15 | - В макросе аргументы не вычисляются
|
---|
16 |
|
---|
17 | Квозиквот (quaziquote):
|
---|
18 | - Вычисляет аргументы списка
|
---|
19 | #+begin_src scheme
|
---|
20 | `(1 2 ,(+ 1 2)) ; => '(1 2 3)
|
---|
21 | #+end_src
|
---|
22 |
|
---|
23 | Сплайсинг:
|
---|
24 | - Разворачивает список внутрь существующего
|
---|
25 | #+begin_src scheme
|
---|
26 | `(1 2 ,@(map 1+ '(2 3))) ; => '(1 2 3 4)
|
---|
27 | #+end_src
|
---|
28 |
|
---|
29 | [[https://www.gnu.org/software/guile/manual/html_node/Expression-Syntax.html][Guile Expression Syntax Manual]]
|
---|
30 |
|
---|
31 | SRFI (Scheme Request For Implementation):
|
---|
32 | - [[id:cb0132fd-af49-49cb-a0cd-c186a9ff5e12][SRFI-9]]
|
---|
33 |
|
---|
34 | [[http://pages.cs.wisc.edu/~fischer/cs538.s08/lectures/Lecture14.4up.pdf][Структуры данных Scheme]]
|
---|
35 |
|
---|
36 | Веб-ресурсы:
|
---|
37 | - https://schemers.org
|
---|
38 | - https://www.staging.scheme.org/
|
---|
39 | - https://community.schemewiki.org
|
---|
40 |
|
---|
41 |
|
---|
42 | Статьи:
|
---|
43 | - http://phyast.pitt.edu/~micheles/scheme/index.html
|
---|
44 |
|
---|
45 | Книги:
|
---|
46 | - https://www.scheme.com/tspl4/
|
---|
47 | - https://freecomputerbooks.com/langSchemeBooks.html
|
---|
48 | - [[https://people.eecs.berkeley.edu/~bh/ss-toc2.html][Simply Scheme: Introducing Computer Science]]
|
---|
49 |
|
---|
50 | Научные статьи:
|
---|
51 | - https://github.com/schemedoc/bibliography
|
---|
52 |
|
---|
53 | ** Достоинства:
|
---|
54 | - Есть стандарт и он маленький (~40 стр)
|
---|
55 | - Есть много реализаций и стандарт просто реализовать
|
---|
56 |
|
---|
57 | ** Недостатки:
|
---|
58 | - Менее динамичен по сравнению с Common Lisp (geiser < Slime)
|
---|
59 |
|
---|
60 | ** Видео:
|
---|
61 | - [[https://youtube.com/watch?v=Kq-4nhIktes][Scheme, Guile, and Racket: an Introduction by Craig Maloney]]
|
---|
62 |
|
---|
63 | ** Проекты:
|
---|
64 | - [[https://github.com/Jobhdez/scheme-to-lambda-calculus-compiler][Scheme to Lambda Calculus compiler]]
|
---|
65 |
|
---|
66 | ** Курсы
|
---|
67 | - [[id:66fb29e8-a082-4289-be17-664b3d470a8e][SICP]]
|
---|
68 | - [[https://www.cs.utexas.edu/ftp/garbage/cs345/schintro-v14/schintro_5.html][An introduction to Scheme and its implementation]]
|
---|
69 |
|
---|
70 | ** Примеры
|
---|
71 | - [[https://spritely.institute/static/papers/scheme-primer.html][Scheme Primer]]
|
---|
72 |
|
---|
73 | ** Книги
|
---|
74 | - [[https://doc.lagout.org/programmation/Lisp/Scheme/Teach%20Yourself%20Scheme%20in%20Fixnum%20Days%20-%20%20Dorai%20Sitaram.pdf][Teach yourself Scheme in Fixnum days]]
|
---|
75 | - Little Schemer
|
---|
76 | - Seasoned Schemer
|
---|
77 |
|
---|
78 | ** Люди
|
---|
79 | - Gerald Sussman
|
---|
80 | - Guy Steele
|
---|
81 | - Friedman
|
---|