![]() |
|
![]() ![]() ![]() |
|
chaos |
|
||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
Доброго времени суток!
Увлекся тут ФП. Читаю Филд А., Харрисон П. - Функциональное программирование Для кодинга больше нравится Erlang в ввиду его применимости в жизни. ИМХО. ![]() Выполняю значит упражения: 1. Конвертирую число на отрезке от 0 до + бесконечности в 2ичную систем 2. Сложить два 2ичных числа вот что я набыдлокодил ![]()
Хочу услышать Вашей критики. Это сообщение отредактировал(а) chaos - 26.10.2010, 10:09 |
||||
|
|||||
Ryukzak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 12.9.2006 Репутация: 1 Всего: 1 |
А почему для бинарных данных использован список?
А реализация мне нравится. Но как мне кажется, элегантнее было бы использовать вместо рекурсии свёртку. По крайней мере, я бы сделал так. |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
||||
|
||||
Ryukzak |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 12.9.2006 Репутация: 1 Всего: 1 |
Вот тут можно об этом почитать для erlang http://en.citizendium.org/wiki/Erlang_(pro...torials/Folding
Чудесный рассказ о свёртках был в одном из номеров практики ФП. Называлась она "Пределы применимости свёрток". Очень рекомендую, но правда она больше теоретическая и на haskell. |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
dec2bin хорошо, bin2dec получилась с квадратичной сложностью на ровном месте. Переписывается в три строчки, с линейной сложностью и хвостовой рекурсией без использования функций вычисления длины списка и возведения в степень, подумай как
![]() С помощью свёртки bin2dec получается ещё короче (см. ф-ю lists:foldl), а вот рекурсивный вариант dec2bin скорее всего даже на Хаскеле будет удобнее и нагляднее. Чисто по Эрлангу: trunc(X / Y) здесь можно заменить на X div Y. Функция length есть встроенная, думаю больше одного раза писать её вручную неинтересно. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
Void, ну вот так только переписал
![]()
Вы про другой вариант говорили? Если да то не говорите решение ![]() |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Тепло, но можно обойтись двумя параметрами и без обращения списка.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
||||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Ничего не надо. Хинт: если взять двоичное число N и приписать к нему справа цифру X, чему будет равно получившееся число?
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
chaos |
|
||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
Void, победил
пришлось взять листок с ручкой и включить моск upd: Познокомился тут со сверткой....и переписал данную функцию иначе
"крутатень" (с) Это сообщение отредактировал(а) chaos - 28.10.2010, 14:13 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума «Функциональные языки: общие вопросы» | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Функциональные языки: общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |