LINUX.ORG.RU

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

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

Потому что код — это текст, предоставленный человеком.

Макросы могут нагенерировать и нечто свое.

Он генерировать будет при запуске. А до запуска он вполне конечный.

Ну да, и в Lisp тоже при запуске, в том же и суть ленивых коллекций и генераторов.

Потому что программы которые работают с cons-ячейками могут опираться на то, что структура конечна (иногда допускается один цикл).

Не могут (в текущих реализациях что я видел), даже в твоей последней функции length есть ошибка, cdr может не быть списком. Вообще учитывая как легко допустить рекурсию, я не вижу смысла во встроенных проверках внутри length. При передаче зацикленных структур ошибки часто возникают где то внутри, потому что никому не интересно это проверять каждый раз, но в какой то функции проверка есть, и методом проверки типов Forth они всплывают.

Но я не понимаю смысл разделения, не проще ли сделать проверку на входе? Сделать тип основанный на cons но ограниченный условиями? Имеет смысл ограничивать мощный тип, а не делать дублированные, разные системы.

Исправление MOPKOBKA, :

Потому что код — это текст, предоставленный человеком.

Макросы могут нагенерировать и нечто свое.

Он генерировать будет при запуске. А до запуска он вполне конечный.

Ну да, и в Lisp тоже при запуске, в том же и суть ленивых коллекций и генераторов.

Потому что программы которые работают с cons-ячейками могут опираться на то, что структура конечна (иногда допускается один цикл).

Не могут (в текущих реализациях что я видел), даже в твоей последней функции length есть ошибка, cdr может не быть списком. Вообще учитывая как легко допустить рекурсию, я не вижу смысла во встроенных проверках внутри length.

Но я не понимаю смысл разделения, не проще ли сделать проверку на входе? Сделать тип основанный на cons но ограниченный условиями? Имеет смысл ограничивать мощный тип, а не делать дублированные, разные системы.

Исправление MOPKOBKA, :

Потому что код — это текст, предоставленный человеком.

Макросы могут нагенерировать и нечто свое.

Он генерировать будет при запуске. А до запуска он вполне конечный.

Ну да, и в Lisp тоже при запуске, в том же и суть ленивых коллекций и генераторов.

Потому что программы которые работают с cons-ячейками могут опираться на то, что структура конечна (иногда допускается один цикл).

Не могут (в текущих реализациях что я видел), даже в твоей последней функции length есть ошибка, cdr может не быть списком. Вообще учитывая как легко допустить рекурсию, я не вижу смысла во встроенных проверках внутри length.

Но я не понимаю смысл разделения, не проще ли сделать проверку на входе? Сделать тип основанный на cons но ограниченный условиями?

Исправление MOPKOBKA, :

Потому что код — это текст, предоставленный человеком.

Макросы могут нагенерировать и нечто свое.

Он генерировать будет при запуске. А до запуска он вполне конечный.

Ну да, и в Lisp тоже при запуске, в том же и суть ленивых коллекций и генераторов.

Потому что программы которые работают с cons-ячейками могут опираться на то, что структура конечна (иногда допускается один цикл).

Не могут (в текущих реализациях что я видел), даже в твоей последней функции length есть ошибка, cdr может не быть списком. Вообще учитывая как легко допустить рекурсию, я не вижу смысла во встроенных проверках внутри length.

Исправление MOPKOBKA, :

Потому что код — это текст, предоставленный человеком.

Макросы могут нагенерировать и нечто свое.

Он генерировать будет при запуске. А до запуска он вполне конечный.

Ну да, и в Lisp тоже при запуске, в том же и суть ленивых коллекций и генераторов.

Потому что программы которые работают с cons-ячейками могут опираться на то, что структура конечна (иногда допускается один цикл).

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

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

Потому что код — это текст, предоставленный человеком.

Макросы могут нагенерировать и нечто свое.

Он генерировать будет при запуске. А до запуска он вполне конечный.

Ну да, и в Lisp тоже при запуске, в том же и суть ленивых коллекций и генераторов.

Потому что программы которые работают с cons-ячейками могут опираться на то, что структура конечна (иногда допускается один цикл).

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