Комментарии 10
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Ошибки нет, наверно 0 сбивает с толку привыкших к си, в Scheme истина все кроме #f. Результат and и or это либо ложь, либо значение истинного аргумента. Например, (and #f 11 22 33); => #f, при этом как только получен #f остальные аргументы не вычисляются. Выражение (or #f 11 22 33) ;=> 11, т.к. после того, как получена истина следующие аргументы не вычисляются.
Нечто общее с FORTH есть, сам когда-то увлекался последним. Форт может в более широких пределах расширять синтаксис. Однако, ИМХО лисп более гибок и более высокоуровневый, не нужно постоянно заботится о стеке, проще реализуется переменное число аргументов и т.д…
Нечто общее с FORTH есть, сам когда-то увлекался последним. Форт может в более широких пределах расширять синтаксис. Однако, ИМХО лисп более гибок и более высокоуровневый, не нужно постоянно заботится о стеке, проще реализуется переменное число аргументов и т.д…
У нас тут ошибка в cond statement, default case должен быть #t, а не else. Хотя может разные интерпретаторы по разному работают?
Так же забыли упомянуть, что функции вида (define (add a b) (+ a b) это named functions (именные?), а функции вида (lambda (x y) (+ x y)) это anonymous functions.
Я бы еще сюда добавил функции для создания, разрушение, присоединения листов: cons, car/cdr, append.
И очень полезную функцию eval
Так же забыли упомянуть, что функции вида (define (add a b) (+ a b) это named functions (именные?), а функции вида (lambda (x y) (+ x y)) это anonymous functions.
Я бы еще сюда добавил функции для создания, разрушение, присоединения листов: cons, car/cdr, append.
И очень полезную функцию eval
Спасибо за наблюдение. В cond может быть как else так и #t оба варианты корректны, в стандарте R6Rs, в примерах else. Хотя #t наверно более читаемо.
Согласен, как-то упустил из виду, обязательно позже дополню.
Так же забыли упомянуть, что функции вида (define (add a b) (+ a b) это named functions (именные?), а функции вида (lambda (x y) (+ x y)) это anonymous functions.
Я бы еще сюда добавил функции для создания, разрушение, присоединения листов: cons, car/cdr, append.
И очень полезную функцию eval
Согласен, как-то упустил из виду, обязательно позже дополню.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Углубление в Scheme