]]> ]]>

JScheme

Реализация языка программирования Lisp

JScheme — интерпретатор Scheme, разработанный Ken Anderson, Tim Hickey и Peter Norvig. Язык, реализованный JScheme, практически совместим со стандартом R4RS. Интерпретатор написан на Java и предоставляет очень простой интерфейс с Java. Распространяется под лицензией zlib/libpng.

Примеры:

Hello, World!:

Пример для версий JScheme 7.2, MIT/GNU Scheme 7.7.9, guile 1.8.5

Вывод строки на печать — побочный эффект выполнения этой команды. В зависимости от выбранной реализации, команда вернет либо выведенный текст, либо Unspecified return value.

(write "Hello, World!")

Факториал:

Пример для версий JScheme 7.2, MIT/GNU Scheme 7.7.9, guile 1.8.5

Используется рекурсивное определение факториала. Отметим, что GNU Guile и MIT/GNU Scheme выводит правильный результат, а в JScheme возникает переполнение, и факториалы с 13! вычисляются неправильно.

(define (factorial x)
  (if (< x 2)
    1
    (* x (factorial (- x 1)))))

(do ((i 0 (+ i 1)))
  ((> i 16))
    (display (string-append (number->string i) "! = "))
    (display (number->string (factorial i)))
    (newline))

Числа Фибоначчи:

Пример для версий JScheme 7.2, MIT/GNU Scheme 7.7.9, guile 1.8.5

Используется рекурсивное определение чисел Фибоначчи.

(define (fibonacci x)
  (if (< x 2)
    x
    (+ (fibonacci (- x 1)) (fibonacci (- x 2)))))

(do ((i 1 (+ i 1)))
  ((> i 16))
    (display (string-append (number->string (fibonacci i)) ", ")))
(display "...")
(newline)

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам