![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
P.S. А вообще, вот интересная статейка о функциональном программировании на Python (если знаком с лиспом - должно понравиться
![]() -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
||||
|
||||
albertn |
|
||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Но по моему они зря сравнивают свои Короткозамкнутые функции с функцией COND. На сколько я понимаю,
Вернет совсем не 0, а 2. А для обхода этой ситуации придется толи менять условия, толи менять возвращаемое значение. А лисп это вещь, если конечно не это бесконечное количество скобок ![]() Добавлено @ 09:03
Че-то я забыл, что пустой список это тоже False |
||||||||||
|
|||||||||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
Спасибо, - пригодилось! |
|||
|
||||
Artemios |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Полной аналогии с COND наверно не получится:
будет 2, так как
Да, для аналогии с COND нужно, чтобы в мультиселекте в паре (a and b) второй элемент (возвращаемое значение b) никогда не был нулевым/пустым/ложным/etc, например:
вернет [0]. А это уже извращение ![]() ![]() Это сообщение отредактировал(а) Artemios - 24.8.2006, 19:23 -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||||||||||
|
|||||||||||||
albertn |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
А также можно сделать, чтобы условия не пересикались, тогда результат будет аналогичным
Но это тоже не всегда удобно. Кстати, в случае чего можно написать свою функцию типа сишного ?:, как сделали в Zope, или даже саму функцию COND. Возможно даже это будет иметь смысл. |
||||
|
|||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Можно и весь лисп прикрутить в качестве расширяемого модуля ![]() ![]() -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
albertn |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 368 Регистрация: 17.7.2006 Где: г. Ставрополь Репутация: 30 Всего: 34 |
Ну если так посмотреть, то в питоне есть почти все, что необходимо для лиспа. Ну че, организуем проект? |
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
тогда лучше создать отдельную тему в форуме.
я - за! Но знаний по лиспу нет. |
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Эх, оффтопик, но для отдельной темы наверно это пока будет излишне...
У меня по лиспу тоже мало знаний. Есть такие соображения. Если нам нужен чистый функциональный лисп (без ОО), то здесь вообще проблем не должно быть. Единственное, что потребуется - реализовать на си преобразование: питоновский список <--> лисповский список. Другой вопрос: а нужно ли это? То же самое со списками мы можем и питоном делать. Как в лиспе программа - это такой же список, как и данные, - так и в питоне программа - это такой же объект, как и другие объекты. То есть, если нам нужны не только преобразования списочных данных, но и динамическая генерация/модификация программного кода - то это позволяет и питон (функции высших порядков, метаклассы). Такое вот ИМХО ![]() -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
предлагаю написать функции, которые эмулировали работу со списками или написать класс потомок списка и класс потомок словаря, у которых были бы специфические методы и свойства. |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: 1 Всего: 41 |
||||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 10 Всего: 173 |
Почти в тему
![]() Набрёл случайно по ссылкам на следующий ASPN Cookbook recipe: List/Generator Monad Combinators. Отрывок кода:
Отдавая должное изобретательности автора этого кода, лично у меня возникают ассоциации с шаблонным метапрограммированием в С++: выглядит круто, но на практике проще пользоваться языками и инструментами, изначально ориентированными на такой род задач. Могу ошибаться ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
setq |
|
|||
Unregistered |
||||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
Cr@$h, спасибо!
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |