История изменений
Исправление MOPKOBKA, (текущая версия) :
(defstruct (point (:type list)) x y)
А в Racket так можно? Не могу найти в документации что то.
Мне он пока нравится больше чем CL, который выглядит как нечто старое и спроектированное из кусков древних реализаций. Почему Racket:
1. Неизменяемые ячейки просто необходимы (мое мнение конечно), иначе приходится следить за ними как в С за памятью, только еще сложнее, ибо в С нету возможности создать массив из нескольких других, а потом удивляться изменению.
2. Императивное программирование в CL не такое удобное как в условном С, и не такое простое и наглядное как функциональное, а функциональное в Racket лучше продуманно, лучше подобраны аргументы, функции принимают несколько списков, пример foldl - reduce.
3. Вещи которые ожидаемы из коробки: генераторы, паттерн-матчинг (это есть даже в Python).
4. Lisp 2 ужасен, я хочу отличить #f от '(), я не хочу запоминать что есть несколько пространств имен.
Так что если кто то заинтересовавшийся лиспом это читает, я советую ему Racket.
Исходная версия MOPKOBKA, :
(defstruct (point (:type list)) x y)
А в Racket так можно? Не могу найти в документации что то.
Мне он пока нравится больше чем CL, который выглядит как нечто старое и спроектированное из кусков древних реализаций. Почему Racket:
1. Неизменяемые ячейки просто необходимы (мое мнение конечно), иначе приходится следить за ними как в С за памятью, только еще сложнее, ибо в С нету возможности создать массив из нескольких других, а потом удивляться изменению.
2. Императивное программирование в CL не такое удобное как в условном С, и не такое простое и наглядное как функциональное, а функциональное в Racket лучше продуманно, лучше подобраны аргументы, функции принимают несколько списков, пример foldl - reduce.
3. Вещи которые ожидаемы из коробки: генераторы, паттерн-матчинг (это есть даже в Python).
4. Lisp 2 ужасен, я хочу отличить #f от '(), я не хочу запоминать что есть несколько пространств имен.