
Mikhail
10.10.2016
15:08:41
вобще-то jvm
мы говорим про рантайм

Alex
10.10.2016
15:08:52
а он жеж компилирует на ходу!

Mikhail
10.10.2016
15:09:02
тогда jit

Google

Alex
10.10.2016
15:10:11
джит это характеристика компилятора ?

Alexey
10.10.2016
15:29:57
Не "харкодь" строки

kir
10.10.2016
15:33:09
Не Enum, а case-class заведи.

Eugene
10.10.2016
15:45:43
case object

folex
10.10.2016
15:45:44
пятиминутка занудства прям

Alex
10.10.2016
15:47:52
moar like 2.5 часа :)

folex
10.10.2016
15:48:31
Zanooda User Group

Aleksey
10.10.2016
15:48:54
Zanooda - офигенное знавание для компании.

folex
10.10.2016
15:49:39
Работать с ними будут только самые отчаянные либо тоже зануды

Mikhail
10.10.2016
15:50:24

Nikolay
10.10.2016
15:50:27
на собеседованиях будет говорить в основном тот кто собеседует, а не тот кого собеседуют

Mikhail
10.10.2016
15:50:39
где ж я писал, что я харкожу строки то)

Google

Aleksey
10.10.2016
15:50:55

Alex
10.10.2016
15:51:08
гугл сообщает что zanood это индийская фамилия :)

Aleksey
10.10.2016
15:51:24
Тогда точно надо брать.

Mikhail
10.10.2016
15:51:28
мне в данном случае и енумы то не нужны, потому как это дополнительный и избыточный бойлерплейт)

Vladislav
10.10.2016
15:52:27
Шутка минутка

Nikolay
10.10.2016
15:56:07
у меня была идея назвать компанию "80% done"

Aleksey
10.10.2016
15:56:34
Подожите, я записываю!

Nikolay
10.10.2016
15:56:42
и она будет заниматься аутсорсом
знаете же, что всегда самое сложное - это доделать проект. так вот, эта компания всегда будет делать проект на 80%
и когда будут заказывать доработки, то их тоже на 80% делать
это как в парадоксе про Ахилеса и черепаху

Mikhail
10.10.2016
15:58:31
а будет ли она выполнять 100% от 80% проекта? или в рекурсию свалится?

Nikolay
10.10.2016
15:59:00

Alex
10.10.2016
15:59:03
будет ли она заполнять джиру на 100%?

Nikolay
10.10.2016
15:59:12
она засчет рекурсии будет жить

Alex
10.10.2016
15:59:53
это как в анекдоте "а мне похуй что там написано"

Nikolay
10.10.2016
15:59:54

Mikhail
10.10.2016
16:00:06
главное, чтобы клиенты не чухнули и тоже в рекурсию по оплате не ушли, каждый раз будут 80% от предыдущей оплаты платить)

Nikolay
10.10.2016
16:00:50
хм, этот вопрос предстоит решить, согласен

Google

Aleksey
10.10.2016
16:01:45
А платить они будут так: все бумаги подготовили, сумму в интернет-банке заполнили... и закрыли вкладку.

Daniel
10.10.2016
16:02:49
надо еще следить, чтобы (it(n+1) - it(n)) не стремилось к нулю
тогда экономически это будет ривлекательно (ряд чтобы не сходился)

Alex
10.10.2016
16:04:18
лучше чтобы к +∞

Nikolay
10.10.2016
16:06:16
можно так микросервисы пилить по принципу 80% done. и оплату брать за каждый. но не уверен что прокатит

Mikhail
10.10.2016
16:07:42
шантажировать тем, что до полной оплаты метод будет возвращать не более 80% от реальных данных
или будет отвечать только на 80% запросов

Nikolay
10.10.2016
16:09:02
high availability = 80% availability

Denis
10.10.2016
16:27:01
80% consistency
aka eventual consistency :)

Alex
10.10.2016
16:37:50
partial consistency

Denis
11.10.2016
05:05:33
http://degoes.net/articles/insufficiently-polymorphic

Aleksey
11.10.2016
05:59:40

Aleksey
11.10.2016
06:11:12
Вопрос (который я когда-то уже задавал): почему нет либы с мемоизацией?

Vadim
11.10.2016
06:12:06
а тебе надо чтобы там кроме мемоизации больше ничего не было?)

Aleksey
11.10.2016
06:14:11
Конечно. Я же не люблю фреймворки.

Vadim
11.10.2016
06:15:01
ну тогда придется ее выкорчевать откуда либо)

Aleksey
11.10.2016
06:15:35
А где есть?
Скалази?

Vadim
11.10.2016
06:16:08
twitter utils, scalaz, в cats Eval

Aleksey
11.10.2016
06:30:04
Интересно, что ни одна из имплементаций не использует мягкие ссылки.

Google

Aleksey
11.10.2016
06:37:53
Хотя казалось бы.

Vadim
11.10.2016
06:43:33
ты кеш пытаешься сделать чтоли?

Aleksey
11.10.2016
06:53:49
У меня есть чистые функции, который по многу раз вызываются с одинаковыми аргументами. Спустя какое-то время они перестают вызываться с этими аргументаци. Хочется что бы результат вычисления убивался вместе с аргументами.

Nick
11.10.2016
07:23:38

Aleksey
11.10.2016
07:24:31

Nick
11.10.2016
07:25:25
Ну weak эт нихера не cache)

Aleksey
11.10.2016
07:25:35
def memoize[I, O](f: I => O): I => O = {
val cache = java.util.Collections.synchronizedMap(new java.util.WeakHashMap[I, O]())
(args: I) => {
import java.util.function.Function
cache.computeIfAbsent(args, new Function[I, O] {
def apply(x: I): O = f(x)
})
}
}
Что-то типа такого, только что бы с таплами нормально работало.

Admin
ERROR: S client not available

Aleksey
11.10.2016
07:26:10
То что я написал с таплами не работает, потому что они вычищаются примерно сразу и значение соответственно дропается.

Evgeniy
11.10.2016
07:27:05
ктонибудь, кто читал статью De Goes-а про [Onion](http://degoes.net/articles/modern-fp-part-2) разобрался как там подразумевается имплементировать интерпретаторы которые должны выражатся в терминах другого интерпретатора ?
вот это все:
val bankingLogging : BankingF ~< Halt LoggingF
val bankingProtocol : BankingF ~< ProtocolF
val protocolSocket : ProtocolF ~< SocketF
val loggingFile : LoggingF ~< FileF
val execFile : FileF ~> IO
val execSocket : SocketF ~> IO

Nick
11.10.2016
07:31:14
Ещё weakhashmap не конкарент

Aleksey
11.10.2016
07:32:10
Ещё weakhashmap не конкарент
Ну я его там обернул. Это все детали. Гораздо сложнее сделать что бы все работало не для одного аргумента. Несколько аргументов это тапл, который будет вычищен.

Mikhail
11.10.2016
07:32:11
тупл есть такой же обьект как и любой другой, все остальные плюшки туплов - исключительно синтаксический сахар)
в рамках скалы конечно же)

Aleksey
11.10.2016
07:33:59
По этому интересует готоваря реализация, что бы не изобретать.

Mikhail
11.10.2016
07:34:32
Об этом и речь - ты не сможешь работать с содержимом тапла. Однако ты можешь сделать две мапы и ключами сделать содержимое тапла

Google

Mikhail
11.10.2016
07:34:51
если конечно тебе достаточно тупла из 2ух, для 3 - придется делать три мапа

Aleksey
11.10.2016
07:34:52

Mikhail
11.10.2016
07:34:56
да
иначе никак, если хочешь работать с содержимым тупла)
ну в принципе вру, ты можешь один мап использовать
хотя там может возникнуть коллизия
смотря какие у тебя задачи

Aleksey
11.10.2016
07:35:54

Mikhail
11.10.2016
07:35:54
если поля тупла разные по типу - то хватит и одного мапа

Nick
11.10.2016
07:36:31

Aleksey
11.10.2016
07:36:34

Vadim
11.10.2016
07:37:00
я вообще не понял идеи - для чего нужно время жизни результата мемоизации привязывать к аргументам?)

Grigory
11.10.2016
07:37:34
А реализация скалаза / кошек не походит?

Aleksey
11.10.2016
07:37:38
И у твитора тоже.

Nick
11.10.2016
07:38:09
Aleksey в общем зачем тебе эт? У тебя функции по часу работают?

Grigory
11.10.2016
07:38:09
А может вариант залезть внутрь и по мотивам сделать?
Если можно

Mikhail
11.10.2016
07:38:25
зачем? тебе же надо просто якорь для памяти. val t = (a,b) map(a) = v map(b) = v но опять таки от коллизий не защищается, потому что теряется уникальность для тупла в случае если один из аргументов используется больше чем в одном случае

Aleksey
11.10.2016
07:38:33