Когда мне в очередной раз рассказывают про то, что в Lisp слишком много круглых скобочек — это миф, то я представляю себе приблизительно это:
(: fact (Integer -> Integer))
(define (fact n)
(if (<= n 1)
1
(* n (fact (- n 1)))))
func fact(int n) int {
if n <= 1 {
return 1
} else {
return n * fact(n - 1)
}
}
int fact(int n) {
if (n <= 1)
return 1;
else
return n * fact(n - 1);
}
Ещё более впечатляющее сравнение происходит с языками, испльзующими алголоподобную лексику.
PROCEDURE fact(n: INTEGER): INTEGER;
IF n <= 1 THEN
n := 1
ELSE
n := n * fact(n - 1)
END
RETURN
n
END fact;
Первый пример кода написан Racket с указанием статических типов, и на нём виден способ экономии скобочек — просто не указывать типы, как это делается во многих диалектах Lisp. Так проще создавать примеры, где количество скобочек сопоставимо. Также, если не указывать, что в других языках скобочки 3-4 видов и они соотнесены с разными смыслами, что упрощает их восприятие, то снова можно преуменьшить проблему восприятия кода на Lisp.
Комментариев нет:
Отправить комментарий