netp_npokon: (Default)
[personal profile] netp_npokon
Полез в Common LISP, чтобы проверить, как работают примеры для MAPx из "Мира Лиспа". Похоже, у разработчиков clisp'a и у авторов книжки разное видение того, как работает NCONC. Более того, там без полбутылки-то и не поймешь, что она делает.

Date: 2005-10-03 09:16 pm (UTC)
From: [identity profile] deerector.livejournal.com
Я бы и с двумя полбутылками не понял, что ты щас сказал :)))

Date: 2005-10-04 03:10 am (UTC)
From: [identity profile] aka-avor.livejournal.com
+1. А комменты рулят :)

Date: 2005-10-03 10:12 pm (UTC)
From: [identity profile] dendik.livejournal.com
BTW, ты Common Lisp HyperSpec видел?

/me посмотрел там определение nconc из CL...

Ужас! Вот за это я люто ненавижу CL!!! Это append с побочным действием затирания всего, что ни попадя чем попало... :-(

А чем оно должно быть по "Миру лиспа"?

Date: 2005-10-03 10:13 pm (UTC)
From: [identity profile] dendik.livejournal.com
Слушай, я только сейчас осознал: у нас будет рассказ о функциях высшего порядка на примере лиспа??? То есть совсем не будет про карринг?

Чёрт, как я мог упустить такое!... :-/

Date: 2005-10-03 10:38 pm (UTC)
From: [identity profile] netp-npokon.livejournal.com
Да, похоже, мы с Олей слишком буквально поняли слова Головина про то, что темы докладов совпадают с книжкой по лиспу.

Карринг я, боюсь, уже не успею осилить. Просто все, что на эту тему находится, написано в терминах хаскеля, с которым я знаком очень-очень поверхностно.

Date: 2005-10-03 10:50 pm (UTC)
From: [identity profile] dendik.livejournal.com
Ну, на самом деле хаскель, FP, лямбда исчисление безусловно. Карринг есть довольно много где, это просто очень красивая и простая идея. С хаскелем безусловно есть такая беда, что это очень и очень большой язык. Писать на нём просто, но за пару его точно не расскажешь. И за две пары не расскажешь. А ещё у хаскеля есть такая беда, что хаскель, хоть и очень строгий и узкий язык по форме, но при этом иначе как мультипарадигмальным его назвать нельзя, так много разных существенно отличных подходов к его использованию. С другой стороны, это единственный живой строго-функциональный язык (есть ещё Clean, но его ни строго функциональным назвать нельзя, ни живым по-настоящему... хотя над его программами можно, наверное, тоже очень серьёзные доказательства и преобразования проводить).

А с Головиным проблема такая, что он по-моему не ощущает себя на этом семинаре главным и следует тому, что говорит Столяров. А Столяров — фанат лиспа. В итоге когда я придумывал темы, передо мной поставили задачу "придумать темы, чтобы познакомить третий курс с лиспом". Так что проблема это не твоя с Олей...

Ну да ладно, у нас ещё есть один неназначенный доклад, можно будет придумать чего-нибудь интересное для него. (Пока что у меня в голове идея, чтобы это был рассказ про FP... Это очень интересный язык... Но с другой стороны, про FP уже в прошлом году рассказывали, можно рассказать и о чём-нибудь, о чём на семинаре не рассказывали, что будет новым и интересным не только третьему курсу... Благо интересного-то полно!)

Date: 2005-10-03 10:21 pm (UTC)
From: [identity profile] netp-npokon.livejournal.com
Видел, удивился.

В "Мире лиспа" есть примерно такая вещь:
(NCONC '(A . 1) '(B . 2) '(C . 3) )
Они ее сворачивают в (A B C), a CL - в (A B C . 3)

Date: 2005-10-03 10:23 pm (UTC)
From: [identity profile] dendik.livejournal.com
Хм. Ну, знаешь, это мелочи. Разное поведение на случай одного аргумента, считай.

Date: 2005-10-03 10:45 pm (UTC)
From: [identity profile] netp-npokon.livejournal.com
Просто уж очень оно непредсказуемо, как мне кажется:
>(nconc '(a . (b c)) '(b . 2))
(A B C B . 2)

To есть какие-то точечные пары он глотает, а какие-то нет.

Впрочем, на доклад это, естессна, не повлияет. Просто неудачный пример на какое-то время осложнил понимание )

Date: 2005-10-03 10:51 pm (UTC)
From: [identity profile] dendik.livejournal.com
Эээ!! Ты забываешь, что точечная пара — это всего-лишь представление списков!

(a . (b c)) = (a b c) по определению!!! Самый любимый способ подлавливать на самых простых задачках по лиспу :)

Date: 2005-10-03 11:00 pm (UTC)
From: [identity profile] netp-npokon.livejournal.com
Вот именно, с этим-то проблем нет. Но если хвост первого (точнее, любого, кроме последнего) аргумента - не список, а атом, то он выбрасывается. Вроде бы в описании такого не было.

Date: 2005-10-04 10:06 am (UTC)
From: [identity profile] dendik.livejournal.com
Дык про это мы уже обсудили, я думал.

В случае CL это вопрос семантики last и выбора реализации nconc в случае одного аргумента.

В случае "Мира лиспа" ситуация, видимо, та же, кроме того, что базисом рекурсии они используют ситуацию без аргументов.

Я всё никак не понимаю, в чём твои проблемы на этом месте. Я же говорил, что диалекты лиспа — это вообще ужасная вещь по тому, как они могут различаться. Мне вообще странно даже, что и в "Мире лиспа", и в CL есть nconc.

Date: 2005-10-05 07:48 pm (UTC)
From: [identity profile] netp-npokon.livejournal.com
Ну, в общем, проблемы-то нет, просто непонятен смысл плодить столько различий на пустом месте. Хотя если самому в такие ситуации не лезть (в Си же нормальные люди не пишут по пять плюсов подряд :) ), то можно и не задумываться.

Date: 2005-10-05 07:58 pm (UTC)
From: [identity profile] dendik.livejournal.com
Хм. Потому же, почему много кодировок для русского языка. Потому же, почему и так много языков программирования.

Ну или может потому, что CL вообще никак не координирвался с лиспом из книжки.

Date: 2005-10-05 08:54 pm (UTC)
From: [identity profile] netp-npokon.livejournal.com
Но был же какой-то первоначальный диалект, right?
Хотя тут согласен, пути всяких изменений, вносимых разработчиками, неисповедимы )

Date: 2005-10-05 08:59 pm (UTC)
From: [identity profile] dendik.livejournal.com
Лисп по Маккарти?.. Филд-Харрисон пишут, что это был лисп без побочных эффектов (то есть уже без defun, с let, притом, видимо, с довольно простым let, без setq, nconc и прочей мрази — но это мои домыслы).

Понятно, что Комиссия, которая сочиняла из кучи существовавших к тому моменту диалектов Common Lisp, ориентировалась в большей степени на промышленную применимость, соответственно лисп по Маккарти им был вовсе не указом.

Profile

netp_npokon: (Default)
netp_npokon

April 2017

S M T W T F S
      1
23 45678
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 26th, 2025 11:39 pm
Powered by Dreamwidth Studios