Про неуклюжесть функционального программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 17.11.07 10:57
Оценка:
Вот в этой статье рассматривается сабж. Безусловно эта "неуклюжесть" появляется часто в репликах оппонентов ФП, только вот большей частью она является сдествием исходного императивного мышления, когда уже есть наработанные привычки рассмотрения алгоритмики и довольно трудо "разорвать шаблон" и посмотреть на проблему несколько иначе. Другой момент против ФП — чистые функции, порой работающие с большимини или бесконечными структурами, причём передавая их из вызова в вызов, тогда как в императивном программировании легко и привычно воспользоваться деструктивными изменениями. Говорится, что Gerard Huet предлагает структуру данных Zipper для решения данных проблем. Работа эта у меня одна из первых в списке для прочтения и загодя есть вопрос — а насколько общим является данный подход?
Re: Про неуклюжесть функционального программирования
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 18.11.07 08:54
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Работа эта у меня одна из первых в списке для прочтения и загодя есть вопрос — а насколько общим является данный подход?


В Haskell намного Другой выход — писать структуру на IO, т.е. тот же императивный подход, а это коробит.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Про неуклюжесть функционального программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 18.11.07 09:07
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Здравствуйте, Курилка, Вы писали:


К>>Работа эта у меня одна из первых в списке для прочтения и загодя есть вопрос — а насколько общим является данный подход?


L>В Haskell намного Другой выход — писать структуру на IO, т.е. тот же императивный подход, а это коробит.


Тот же императивный как на ИЯ? Зиппер, он как я понимаю функциональный?
Не, точно надо прочитать про него
Re[3]: Про неуклюжесть функционального программирования
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 19.11.07 09:21
Оценка: 7 (1)
Здравствуйте, Курилка, Вы писали:

L>>В Haskell намного Другой выход — писать структуру на IO, т.е. тот же императивный подход, а это коробит.


К>Тот же императивный как на ИЯ? Зиппер, он как я понимаю функциональный?

К>Не, точно надо прочитать про него

Ага, на оба вопроса
Почитай, после него становится видно, чем функциональные структуры отличаются.
У Кирпичева судя по слайдам замечательный доклад, можно полистать их, ну и Хуета тоже, разумеется, надо
Потом можно и Окасаки, хотя у меня он раньше был почему то.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Про неуклюжесть функционального программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 19.11.07 09:26
Оценка:
Здравствуйте, lomeo, Вы писали:

L>У Кирпичева судя по слайдам замечательный доклад, можно полистать их, ну и Хуета тоже, разумеется, надо

L>Потом можно и Окасаки, хотя у меня он раньше был почему то.

Поглядим обязательно, а окасаки, помнится, меня напугал в своё время, правда это было пару лет назад если не больше, может уже пойдёт гораздо проще
P.S. оффтопочный вопрос — а ты в каком редакторе хаскель юзаешь? А то я емакс добороть до полной юзабилити не могу
Re[5]: Про неуклюжесть функционального программирования
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 19.11.07 09:38
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Поглядим обязательно, а окасаки, помнится, меня напугал в своё время, правда это было пару лет назад если не больше, может уже пойдёт гораздо проще

К>P.S. оффтопочный вопрос — а ты в каком редакторе хаскель юзаешь? А то я емакс добороть до полной юзабилити не могу

Пока на виндах сидел в емакс, иногда FAR+Colorer, сейчас больше vim.
А с емаксом что не получилось? Там haskell-mode ставишь и можно ещё HaRe, если рефакторить будешь.
В haskell-mode есть связка с GHCi (C-c C-s, C-c C-b, C-c C-r). Подрубаешь что надо, вот мой кусок:

(load "~/lib/emacs/haskell-mode/haskell-site-file")

(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent)
(add-hook 'haskell-mode-hook 'font-lock-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-ghci)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Про неуклюжесть функционального программирования
От: deniok Россия  
Дата: 19.11.07 09:45
Оценка: 1 (1) :))) :)
Здравствуйте, lomeo, Вы писали:

L>... ну и Хуета тоже, разумеется, надо


Напомнило мне рассказ директора этнографического музея в Велье, в Псковской области. Окрестные речки испокон веков имеют простые русские названия — Гавнюха, Сучья. Но картографы — народ подневольно политкорректный, поэтому на картах они называются Гавьюха и, кажется, Сучня.
Re[6]: Про неуклюжесть функционального программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 19.11.07 10:38
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Здравствуйте, Курилка, Вы писали:


К>>Поглядим обязательно, а окасаки, помнится, меня напугал в своё время, правда это было пару лет назад если не больше, может уже пойдёт гораздо проще

К>>P.S. оффтопочный вопрос — а ты в каком редакторе хаскель юзаешь? А то я емакс добороть до полной юзабилити не могу

L>Пока на виндах сидел в емакс, иногда FAR+Colorer, сейчас больше vim.

L>А с емаксом что не получилось? Там haskell-mode ставишь и можно ещё HaRe, если рефакторить будешь.
L>В haskell-mode есть связка с GHCi (C-c C-s, C-c C-b, C-c C-r). Подрубаешь что надо, вот мой кусок:
[cut]
Есть, только она как-то "сбоку ставится" и комбинации клавиш и меню стандартные в хагс лезть пытаются (C-c C-z вроде точно), что как минимум раздражает.
Дома попробую ещё раз посмотреть, может всёж я что-то недопёр когда разбирался с ним.
А чем тебя вим купил?
И среди хаскелистов что популярней он или емакс?
Ещё есть ну совсем левый вопрос — а ты вроде тоже по работе явист, на ней ты хаскель юзаешь?
Re[7]: Про неуклюжесть функционального программирования
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 19.11.07 11:09
Оценка:
Здравствуйте, Курилка, Вы писали:

К>А чем тебя вим купил?


Да ничем, мне как то емакс больше по душе, просто настроить всё недосуг.
vim отторжения не вызывает, вот и работаю пока на нём.

К>И среди хаскелистов что популярней он или емакс?


ХЗ Я как то делал опрос на ру_лямбде, так там поровну вроде как.

К>Ещё есть ну совсем левый вопрос — а ты вроде тоже по работе явист, на ней ты хаскель юзаешь?


на ней = на работе? Хаскель, увы, только для прототипирования, например, алгоритмов. Получается быстро.
Правда, удаётся применять схему.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Про неуклюжесть функционального программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 19.11.07 11:12
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Правда, удаётся применять схему.


Которую?
Удобно?
Может пост напишешь хоть короткий?
Re[9]: Про неуклюжесть функционального программирования
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 19.11.07 12:40
Оценка:
Здравствуйте, Курилка, Вы писали:

L>>Правда, удаётся применять схему.


К>Которую?


Которая Лисп. Поскольку для Явы, то я брал каву.

К>Удобно?


Ну да

К>Может пост напишешь хоть короткий?


Да нечего писать в общем, был у нас переход с одной нашей системы версии на другую, я писал миграцию данных. В обоих версиях структура данных очень отличалась и не просто там дополнительные поля, а другие более близкие к предметной области виды связей, сущности были представлены группой или наоборот и т.д. Так вот на схеме я описал DSL для описания подобных вещей, он у меня занял вроде как сотню-другую строчек, может меньше, не считал. И на нём уже очень удобно описывались эти переходы. Это было самым значимым (может потому что первым) применением. В других случаях я использую схему как генератор кода/ресурсных всяких файлов, либо маленький скриптовый язык, но в качестве последнего, мне кажется он не очень удобен, мне жаваскрипт больше по душе в этом смысле.

А про пост ты прав, давно я ничего не писал
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Про неуклюжесть функционального программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 19.11.07 12:44
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Да нечего писать в общем, был у нас переход с одной нашей системы версии на другую, я писал миграцию данных. В обоих версиях структура данных очень отличалась и не просто там дополнительные поля, а другие более близкие к предметной области виды связей, сущности были представлены группой или наоборот и т.д. Так вот на схеме я описал DSL для описания подобных вещей, он у меня занял вроде как сотню-другую строчек, может меньше, не считал. И на нём уже очень удобно описывались эти переходы. Это было самым значимым (может потому что первым) применением. В других случаях я использую схему как генератор кода/ресурсных всяких файлов, либо маленький скриптовый язык, но в качестве последнего, мне кажется он не очень удобен, мне жаваскрипт больше по душе в этом смысле.


А статически типизированные функциональные не нашли применения? Какие-нибудь CAL, Scala, Jaskell?
Я вот всё думаю куда здесь можно было бы приткнуть что-либо подобное с пользой, пока чтот идей нема
Re[11]: Про неуклюжесть функционального программирования
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 19.11.07 13:48
Оценка: 1 (1)
Здравствуйте, Курилка, Вы писали:

К>А статически типизированные функциональные не нашли применения? Какие-нибудь CAL, Scala, Jaskell?

К>Я вот всё думаю куда здесь можно было бы приткнуть что-либо подобное с пользой, пока чтот идей нема

CAL я только смотрел, не применял, надо попробовать, джаскель находил только какой то сырой.
Очень сильно пробовал скалу, когда писал прототип одного приложения, не пошло — там были завязки на некий фреймворк, для которого скаловские классы ну совсем не подходили, нужны были тупые бины, листы/мапы и т.д.
Ещё по мелочи были какие то проблемы, к сожалению, сейчас не вспомню, но отказался именно из-за того, что интерфейсы не срастались, проще было писать на Яве. Отказался с огорчением, язык очень хороший и для чего нибудь другого вполне бы подошёл.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Про неуклюжесть функционального программирования
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.07 15:18
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Хуета тоже, разумеется, надо


Я даже не знаю что делать. Вроде и банить за мат нельзя и мат в общем то. Хочу только напомнить анегдот в котором Петька переводил фамилию Блюхера . Так вот такие фамилии точно лучше не склонять.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Про неуклюжесть функционального программирования
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 20.11.07 15:52
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Так вот такие фамилии точно лучше не склонять.


Ой, я надеюсь, что таких фамилий больше не будет
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Про неуклюжесть функционального программирования
От: Mamut Швеция http://dmitriid.com
Дата: 21.11.07 13:42
Оценка:
L>>Хуета тоже, разумеется, надо

VD>Я даже не знаю что делать. Вроде и банить за мат нельзя и мат в общем то. Хочу только напомнить анегдот в котором Петька переводил фамилию Блюхера . Так вот такие фамилии точно лучше не склонять.


Могу предположить, что в русский этот автор попал бы как Гует. Во избежание


dmitriid.comGitHubLinkedIn
Re[5]: Про неуклюжесть функционального программирования
От: LaPerouse  
Дата: 21.11.07 13:48
Оценка: 8 (1)
К>Поглядим обязательно, а окасаки, помнится, меня напугал в своё время, правда это было пару лет назад если не больше, может уже пойдёт гораздо проще
К>P.S. оффтопочный вопрос — а ты в каком редакторе хаскель юзаешь? А то я емакс добороть до полной юзабилити не могу

Если уж использовать этот реликт, то лучше хемакс, чем емакс. С помощью настроек, которые я нашел на каком-то сайте (не помню каком, но могу посмотреть если нужно) я смог довести этот осколок эпохи до более-менее человеческого состояния. Стандартная win-раскладка (вырезка ctrl x, вставка ctrl v, копирование ctrl c, отмена ctrl z, удаление выделенного по del, открытие файла по ctrl o, поиск по ctrl f и т д). Также там есть история открытия файлов и пр.

Вот мои конфиги если интересно.

;; init.el — the XEmacs configuration file. This will load some other files
;; from the .xemacs directory. Starting with version XEmacs 21.4, one
;; can use the file .xemacs/init.el as a start-up file instead of init.el

; Saves a history of files opened previously (including other times XEmacs was used — very useful)
(require `savehist)
(setq savehist-file "~/.xemacs/history")
(setq savehist-length 1000)
(savehist-load)

; Saves the position the cursor was in a file before the file was closed.
(load-library "saveplace")
(setq save-place-file "~/.xemacs/places")
(setq shadow-todo-file "~/.xemacs/shadow-todo")

(load-file "~/.xemacs/cua-mode.el") ; load cua-mode every time XEmacs is started
(CUA-mode 1) ; run cua-mode (a package to enable MS Windows type keyboard shortcuts)

(load-library "pc-select") ; a package which enables text selection ...
(pc-select-mode) ; ... with the shift and arrow keys

(load-file "~/.xemacs/my-shortcuts.el") ; will load this file every time XEmacs is started


(load-file "~/.xemacs/my-toolbar.el"); load the toolbar

(require 'font-lock) ; enable syntax highlighting

Чтобы это работало, нужно устанвоить пакеты cua-mode и mas-file-history — там всего два файла надо скопировать в директорию хемакса
c:\.xemacs\cua-mode.el
c:\.xemacs\mas-file-history.el.

Также советую установить ecb — emacs code browser, там удобно список функций отображается если установлен haskell-mode

Ссылки на пакеты могу привести, если интересно.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[6]: Про неуклюжесть функционального программирования
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.11.07 13:53
Оценка:
Здравствуйте, LaPerouse, Вы писали:

К>>Поглядим обязательно, а окасаки, помнится, меня напугал в своё время, правда это было пару лет назад если не больше, может уже пойдёт гораздо проще

К>>P.S. оффтопочный вопрос — а ты в каком редакторе хаскель юзаешь? А то я емакс добороть до полной юзабилити не могу

LP>Если уж использовать этот реликт, то лучше хемакс, чем емакс. С помощью настроек, которые я нашел на каком-то сайте (не помню каком, но могу посмотреть если нужно) я смог довести этот осколок эпохи до более-менее человеческого состояния. Стандартная win-раскладка (вырезка ctrl x, вставка ctrl v, копирование ctrl c, отмена ctrl z, удаление выделенного по del, открытие файла по ctrl o, поиск по ctrl f и т д). Также там есть история открытия файлов и пр.


Не знаю, меня стандартные комбинации удовлетворяют, а чем xemacs интереснее?
Re[6]: Про неуклюжесть функционального программирования
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 21.11.07 14:00
Оценка:
Здравствуйте, LaPerouse, Вы писали:

LP>Если уж использовать этот реликт, то лучше хемакс, чем емакс.


Чем лучше?

LP>С помощью настроек, которые я нашел на каком-то сайте (не помню каком, но могу посмотреть если нужно) я смог довести этот осколок эпохи до более-менее человеческого состояния. Стандартная win-раскладка (вырезка ctrl x, вставка ctrl v, копирование ctrl c, отмена ctrl z, удаление выделенного по del, открытие файла по ctrl o, поиск по ctrl f и т д). Также там есть история открытия файлов и пр.


Зачем??? Зачем ты испоганил emacs???

LP>Также советую установить ecb — emacs code browser, там удобно список функций отображается если установлен haskell-mode


+1
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Про неуклюжесть функционального программирования
От: LaPerouse  
Дата: 21.11.07 15:55
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, LaPerouse, Вы писали:


К>>>Поглядим обязательно, а окасаки, помнится, меня напугал в своё время, правда это было пару лет назад если не больше, может уже пойдёт гораздо проще

К>>>P.S. оффтопочный вопрос — а ты в каком редакторе хаскель юзаешь? А то я емакс добороть до полной юзабилити не могу

LP>>Если уж использовать этот реликт, то лучше хемакс, чем емакс. С помощью настроек, которые я нашел на каком-то сайте (не помню каком, но могу посмотреть если нужно) я смог довести этот осколок эпохи до более-менее человеческого состояния. Стандартная win-раскладка (вырезка ctrl x, вставка ctrl v, копирование ctrl c, отмена ctrl z, удаление выделенного по del, открытие файла по ctrl o, поиск по ctrl f и т д). Также там есть история открытия файлов и пр.


К>Не знаю, меня стандартные комбинации удовлетворяют, а чем xemacs интереснее?


Тем, что дефолтные настрофки ближе к виндовым манерам редактирования текста. Например, там есть выделение слова по ctrl+shift+стрелка (для меня это крайне важно). К тому же, в нем гарантированно возможно настроить таким образом, как я описал (наверное, в емаксе тоже, но я не проверял, потому не факт).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Социализм — это власть трудящихся и централизованная плановая экономика.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.