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