summaryrefslogtreecommitdiff
path: root/content/digarden/pages/20210409071256-scheme.org
blob: 60ac86c22a05bd9ef5ff1e1f0c80f3c5a64f99ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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