LINUX.ORG.RU

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

Исправление monk, (текущая версия) :

Очередная попытка сделать лисп без скобочек? Но зачем? Читается же хуже.

Уверен?

a[5][6] + 2 * h['key]

читается хуже чем

(+ (vector-ref (vector-ref a 5) 6)  (* 2 (hash-ref h ’key))

?

У Хаскеля синтаксис такой не для читаемости, а ради автоматического каррирования и ещё некоторых мелочей. Зачем натягивать его на семантику Ракета?

Вообще-то, именно для читаемости. Никто не мешает писать на Хаскеле вместо:

map head . scanl minus [2..] . map (\p -> [p, p+p..])

в стиле лиспа

(`.` (`.` (map head) (scanl minus [2..])) 
     (map (\p -> [p, p+p..]))))

Но первый вариант читается почти с ходу, а второй требует небольшого напряжения, чтобы понять, что к чему относится.

Впрочем, как и на Хаскеле, в моём языке сохраняется возможность писать как на обычном лиспе: единственное ограничение — символ однострочного комментария (;) больше не обозначает комментарий. Тогда существенными отличиями будет конструкция (надо-быстро …) и перевод ключевых слов.

Исходная версия monk, :

Очередная попытка сделать лисп без скобочек? Но зачем? Читается же хуже.

Уверен?

a[5][6] + 2 * h['key]

читается хуже чем

(+ (vector-ref (vector-ref a 5) 6)  (* 2 (hash-ref h ’key))

?

У Хаскеля синтаксис такой не для читаемости, а ради автоматического каррирования и ещё некоторых мелочей. Зачем натягивать его на семантику Ракета?

Вообще-то, именно для читаемости. Никто не мешает писать на Каскеле вместо:

map head . scanl minus [2..] . map (\p -> [p, p+p..])

в стиле лиспа

(`.` (`.` (map head) (scanl minus [2..])) 
     (map (\p -> [p, p+p..]))))

Но первый вариант читается почти с ходу, а второй требует небольшого напряжения, чтобы понять, что к чему относится.

Впрочем, как и на Хаскеле, в моём языке сохраняется возможность писать как на обычном лиспе: единственное ограничение — символ однострочного комментария (;) больше не обозначает комментарий. Тогда существенными отличиями будет конструкция (надо-быстро …) и перевод ключевых слов.