|
|
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
Добрый день, уважаемые форумчане. Функция по вычислению факториала на языке F# выглядит так: Код: c# 1. 2. 3. Как записать такую функцию на Java 8? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:05 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
С массой ограничений, но всё же: Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:13 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
Из интересного. Лямбда не может ссылаться сама на себя. JLS The transparency of this (both explicit and implicit) in the body of a lambda expression - that is, treating it the same as in the surrounding context - allows more flexibility for implementations, and prevents the meaning of unqualified names in the body from being dependent on overload resolution. Practically speaking, it is unusual for a lambda expression to need to talk about itself (either to call itself recursively or to invoke its other methods), while it is more common to want to use names to refer to things in the enclosing class that would otherwise be shadowed (this, toString()). If it is necessary for a lambda expression to refer to itself (as if via this), a method reference or an anonymous inner class should be used instead . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:16 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
aleapvДобрый день, уважаемые форумчане. Функция по вычислению факториала на языке F# выглядит так: Код: c# 1. 2. 3. Как записать такую функцию на Java 8? Да на любой версии. Код: sql 1. 2. 3. 4. 5. 6. Я уж не помню, заменит ли JDK8 реально этот код а более быстрый Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:17 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, то есть записывается не совсем в функциональном стиле. А возможна ли тогда редукция(преобразование как в F# и др.) для таких выражений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:20 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
Нет, имеется в виду не просто рекурсия, а как математическое определение факториала, которые позволяют функциональные языки - лямбда-выражения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:22 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
aleapvBlazkowicz, то есть записывается не совсем в функциональном стиле. А возможна ли тогда редукция(преобразование как в F# и др.) для таких выражений? Через Stream API https://docs.oracle.com/javase/tutorial/collections/streams/reduction.html Java не функциональный язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:24 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, спасибо, теперь есть с чего начать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:26 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
А я правильно понимаю что для человека знающего java и желающего развития, получается лучше изучить java8 чем scala? Это же ему ближе и возможности получается что такие-же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:44 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
aleapvА я правильно понимаю что для человека знающего java и желающего развития, получается лучше изучить java8 чем scala? Это же ему ближе и возможности получается что такие-же? Ну, одно другому не мешает. Java 8 - просто и понятно. Но Scala вобрала в себя все возможности функционального мира. Поэтому для расширения кругозора лучше такие осваивать именно её. На developerWorks хорошая серия статей с примерыми на разных функциональных языках для JVM http://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=functional thinking: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:47 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
aleapvBlazkowicz, то есть записывается не совсем в функциональном стиле. А возможна ли тогда редукция(преобразование как в F# и др.) для таких выражений? В данном случае функциональный стиль не даёт никаких преимуществ. Факториал- крайне плохой пример рекурсии. Просто в чисто функциональных языках иначе выходит криво- переменных-то там нет :D А компилятор потом мучается, обрабатывая хвостовую рекурсию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 10:55 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
по поводу факториала - тут не так все просто - есть понятие хвостовой рекурсии , очень хорошо пример написания факториала - и объяснение как его не надо писать и как надо - описан в языке Хаскель . что то похожее на это но с объяснением : http://www.willamette.edu/~fruehr/haskell/evolution.html Для java есть что то подобное : http://habrahabr.ru/post/113128/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 12:40 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 12:42 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
BlazkowiczС массой ограничений, но всё же: Код: java 1. 2. 3. 4. 5. 6. 7. 8. BlazkowiczИз интересного. Лямбда не может ссылаться сама на себя. Можно без боксинга, не определяя своих fi. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 16:11 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
avp.mkМожно без боксинга, не определяя своих fi. Только проблему переполнения инта и стека это не решает ни разу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 16:13 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
avp.mkТолько проблему переполнения инта и стека это не решает ни разу.+100500 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 16:59 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
Без рекурсии: Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 17:12 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
avp.mkavp.mkМожно без боксинга, не определяя своих fi. Только проблему переполнения инта и стека это не решает ни разу. По теме функционального подхода. (Не по Java8!). По поводу инта. Посмотри внимательно на самый первый исходник на F#. Код: c# 1. 2. 3. Видишь декларацию типа? Ее нет. По поводу стека - почитай про https://ru.wikipedia.org/wiki/Хвостовая_рекурсия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 17:39 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
mayton По поводу инта. Посмотри внимательно на самый первый исходник на F#. Код: c# 1. 2. 3. Видишь декларацию типа? Ее нет. Вывод типов в Java забанили 10 лет назад: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4459053 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 17:46 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
Хех. Яже пишу выше. Не по Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 17:57 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
aleapvКак записать такую функцию на Java 8? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2014, 22:00 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
Форма записи с переносом точки - просто ужасна ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 12:33 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
maytonФорма записи с переносом точки - просто ужасна ИМХО. Welcome to Java 8! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 12:33 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
maytonФорма записи с переносом точки - просто ужасна ИМХО. Вот тут чувак объясняет почему функциональная запись легче читается: https://miles.no/blog/why-should-we-care-about-functional-programming-part-2-transformations ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 12:43 |
|
||
|
Функциональный подход Рекурсия
|
|||
|---|---|---|---|
|
#18+
В моём лице вы можете найти сторонника ФП. Я всего-лишь сказал что попытка писать в функциональном стиле на синтаксисе Java ужасает. Когда я делаю code review/refactoring того что колбасит моя группа - то обычно ровняю такие штуки в 1 строку. Когнитивный диссонанс от переноса точки вызывает у меня глухое раздражение. Ничего не могу с собой поделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 13:38 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38821643&tid=2126085]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
283ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 601ms |

| 0 / 0 |
