Skip to content

Реализация функционального языка Scheme, аналога mit-scheme, на C++

Notifications You must be signed in to change notification settings

maVovk/scheme-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

scheme-cpp

Реализация функционального языка Scheme, аналога mit-scheme, на C++

Сборка и запуск

mkdir build
cmake ..
make scheme
./scheme

Выход из интерпретатора - q

Синтаксис

Типы данных: логические (#t, #f), целые числа, списки, пары

Особый оператор ' - quote просто возвращает свой аргумент

Для целых чисел поддерживаются: арифметические операции(+, -, *, /), операторы сравнения(<, <=, >, =>, =), операторы минимума, максимума и модуля

$ (+ 1 2)
> 3
$ (= 1 2)
> #f
$ (max 1 2 7)
> 7
$ (abs -10)
> 10

Для списков и пар поддерживаются операции взятия первого элемента - car, отбрасывания первого элемента - cdr, индексацию list-ref и срез последних элементов list-tail

$ (car '(1 2 3))
> 1
$ (cdr '(1 2 3))
> (2 3)
$ (list-ref '(1 2 3) 1)
> 2
$ (list-tail '(1 2 3) 1)
> (2 3)

Операторы and, or считают все выражения кроме #f, применяя short-circuit evaluation и возвращая последний аргумент.

$ (and 1 '1 (+ 1 2))
> 3

Для всех объектов можно вызвать предикат для проверки его типа: number?, list?, pair?, bool?, null?

$ (number? #t)
> #f
$ (pair? '(1 . 2))
> #t
$ (null? '())
> #t

About

Реализация функционального языка Scheme, аналога mit-scheme, на C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published