LINUX.ORG.RU

История изменений

Исправление 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 от '(), я не хочу запоминать что есть несколько пространств имен.