
Andrey
02.12.2016
20:15:05
Даже более. Исключения можно разрешить, они не особо влияют.

Marat
02.12.2016
20:15:08

Andrey
02.12.2016
20:15:46
В процедурном или ООП языке нужно придумывать собственное определение чистой функции. Чистую функцию в функциональном смысле там не построить.

Oleksandr
02.12.2016
20:16:10
чистая функция == для одних аргументов вернет всегда одно
например, функция с мемоизацией (первый вызов 1000с, остальные 0.1с) — "чистая"
независимо от ООП или прочей фигни

Google

James Tiberius Kirk ?
02.12.2016
20:17:10

Oleksandr
02.12.2016
20:17:30
ага

guga
02.12.2016
20:18:37
А если она будет логировать еще?
Мне кажется нужно определить какие сайд эффекты допустимы.

Oleksandr
02.12.2016
20:19:06
тогда не труъ

James Tiberius Kirk ?
02.12.2016
20:19:21
логированние не дает заменить функцию на значение

Oleksandr
02.12.2016
20:19:23
но лично я на такое забиваю и согласен с "допустимыми" сайд эеффектами
сделать "чистое" деление можно десятком способов — div(a, b, whatToDoIfBIsZero); div(a, v): Optional[...], ...

guga
02.12.2016
20:21:11
А какой профит это дает в работе?

Andrey
02.12.2016
20:21:16

Oleksandr
02.12.2016
20:22:16

James Tiberius Kirk ?
02.12.2016
20:22:16

Pavel ?
02.12.2016
20:22:37

Google

Andrey
02.12.2016
20:22:57

guga
02.12.2016
20:23:06

Oleksandr
02.12.2016
20:23:23

Marat
02.12.2016
20:23:26

guga
02.12.2016
20:23:37

James Tiberius Kirk ?
02.12.2016
20:23:37
Ну чистая функция позволяет типа заменить свой вызов и расчет на значение
если она с такими же параметрами уже вызывалась

guga
02.12.2016
20:24:04
Ох вейт, захват монитора ?

James Tiberius Kirk ?
02.12.2016
20:24:05
но тапками не кидайте, я тока первый раз по вене ФП ширнулся

Andrey
02.12.2016
20:24:24
Очи хаскель)
Хаскель рулез.

guga
02.12.2016
20:24:48
Чому не лісп?

Andrey
02.12.2016
20:24:59
Помню как в питоновском чатике была хаскель-эпопея около года назад)

Oleksandr
02.12.2016
20:25:24
хаскель никем серьезным не юзается из-за ленивости по умолчанию
это делает невозможным анализ алгоритмов на нем

Denis
02.12.2016
20:26:04

Andrey
02.12.2016
20:26:10

Oleksandr
02.12.2016
20:26:20
ну про невозможность я загнул, но конкретно так усложняет жизнь — точно

guga
02.12.2016
20:30:36

Google

guga
02.12.2016
20:30:58
А представить приложение без io как-то не могу

Oleksandr
02.12.2016
20:31:00

Andrey
02.12.2016
20:31:06

Oleksandr
02.12.2016
20:31:12
та ну?

James Tiberius Kirk ?
02.12.2016
20:31:19
чистые функции в обычном ооп есть смысл использовать?

guga
02.12.2016
20:31:28

Luger
02.12.2016
20:31:55

Andrey
02.12.2016
20:32:01
та ну?
Да. А какую модель для алгоритмов ты бы выбрал? Процедурную? Ну удачи.

guga
02.12.2016
20:32:11
Мне проще как-то жить с тем io что устоялось

Руслан
02.12.2016
20:32:12
Ленивость-бай-дефолт уже год как выпилили из хаскеля. Или одним ключиком отключается.

Oleksandr
02.12.2016
20:32:39

Andrey
02.12.2016
20:32:45

James Tiberius Kirk ?
02.12.2016
20:33:05
а то я так подумал у меня в коде каждый третий метод может эксепшон выкинуть

Andrey
02.12.2016
20:33:17

James Tiberius Kirk ?
02.12.2016
20:33:38
я пытался обернуть все в подобие монады, но тимлид перекрестился и сказал почитать о фп побольше

Andrey
02.12.2016
20:33:39

Oleksandr
02.12.2016
20:33:41

Andrey
02.12.2016
20:34:11

James Tiberius Kirk ?
02.12.2016
20:34:37

Google

James Tiberius Kirk ?
02.12.2016
20:34:43
свежак
https://www.manning.com/books/functional-programming-in-java
а, вы уже не про фп(

Andrey
02.12.2016
20:35:15
Или давай проще. Вот дан алгоритм быстрой сортировки. Докажи его завершаемость и то, что он именно сортирует массив, а не делает что-либо другое.

Oleksandr
02.12.2016
20:35:15

guga
02.12.2016
20:35:20

Andrey
02.12.2016
20:35:28
Алгоритм написан на Сях.

James Tiberius Kirk ?
02.12.2016
20:35:36

guga
02.12.2016
20:35:58
Чет жаба душит покупать.

Oleksandr
02.12.2016
20:38:11

Admin
ERROR: S client not available

Andrey
02.12.2016
20:38:21
Ладно, быстрая сортировка - глупый вариант. Она по индукции доказывается.
Надо взять что-либо по экхотичнее.

Oleksandr
02.12.2016
20:38:57

Andrey
02.12.2016
20:40:10
Отлично. Давай самое простое. Вот дан код на сях. Докажи его завершаемость.

Oleksandr
02.12.2016
20:40:30
анализ алгоритмов, оценки сложности, памяти

Andrey
02.12.2016
20:40:30
В общем случае.

Oleksandr
02.12.2016
20:40:42
ты сейчас совсем другое просишь
я говорю, что, исторически, большинство алгоритмов и структур данных описываются в императивном стиле

Google

Oleksandr
02.12.2016
20:41:26
а ты мне про проблему остановки

Andrey
02.12.2016
20:42:08

Oleksandr
02.12.2016
20:42:17
вполне

Andrey
02.12.2016
20:42:20
Думаю, что нет.

Oleksandr
02.12.2016
20:42:35
ну окей, тогда зачем спрашивать

Andrey
02.12.2016
20:43:03
Хотя да, я не прав.

Руслан
02.12.2016
20:43:26
Вроде оно, я с телефона, на ходу, не очень удобно ?

Oleksandr
02.12.2016
20:45:02

James Tiberius Kirk ?
02.12.2016
20:55:38
мне в жабе больше хочется почитаь
не потому что жаба больше подходит, а потому что мне сложно одновременно ширяться скалой и фп-понятиями
public Try div(int a, int b){
if(b==0) return Try.setError("cant div on zero);
else return Try.setResult(a/b); }
это является чистой функицей?
с монадой Try условной

Oleksandr
02.12.2016
20:59:21
угу

James Tiberius Kirk ?
02.12.2016
20:59:43
каеф

Oleksandr
02.12.2016
20:59:45
правда, Try тут совершенно не обязательно быть монадой (и она ею быть не может)

James Tiberius Kirk ?
02.12.2016
21:00:19
чому не может?

guga
02.12.2016
21:00:25
А что делать с out of memory?

James Tiberius Kirk ?
02.12.2016
21:00:35
смириться

Andrey
02.12.2016
21:01:13

James Tiberius Kirk ?
02.12.2016
21:01:26
я в процессе изучения фп