@scala_ru

Страница 628 из 1499
Denis
27.04.2017
12:06:58
первая строчка )

Alex
27.04.2017
12:12:02
токсоплазмоз

Vyatcheslav
27.04.2017
12:24:05
> На основании последних научных изысканий считается, что Toxoplasma gondii способна провоцировать развитие шизофрении Сначала втаскиваешь в проект cats, а потом голоса в голове требуют втащить в проект shapeless и всякие фримонады

Grigory
27.04.2017
12:25:08
вот она и есть шизофрения одна половина говорит юзай шаплез везде а вторая нигде

Google
Alex
27.04.2017
12:32:47
фриманатки есть в самих котах

Aleksey
27.04.2017
12:55:27
Наткнулся тут на гист интересный https://gist.github.com/folone/4945168 Кто в курсе этой фичи?

Alexander
27.04.2017
13:02:02
похоже на https://github.com/milessabin/shapeless/wiki/Feature-overview:-shapeless-2.0.0#singleton-typed-literals

Denis
27.04.2017
13:02:57
@fomkin https://github.com/fthomas/singleton-ops

Oleg
27.04.2017
13:04:35
@fomkin https://github.com/fthomas/singleton-ops
Что то там в ридми нет ничего про эту волшебную крышечку

это прям какой-то идрис уже

Denis
27.04.2017
13:05:16
ага

очень круто

Aleksey
27.04.2017
13:05:28
Что то там в ридми нет ничего про эту волшебную крышечку
Удивительно что ни где не написано про @@.

Denis
27.04.2017
13:05:34
карри ховард изоморфизм во все поля

Aleksey
27.04.2017
13:05:51
очень круто
Я попробовал, не работает.

По этому и спросил, мол кто что знает.

Oleg
27.04.2017
13:06:05
Google
Aleksey
27.04.2017
13:06:13
у тебя TLS?
Нет, обычная

у тебя TLS?
Но это не важно. Эта волшебная крышечка ни где не определна.

Oleg
27.04.2017
13:06:50
ну там же нужно TLS с "-Yliteral-types"

Denis
27.04.2017
13:07:02
я не уверен что крышечка оттуда

крышечка очень жирная

функции на тайплевел поднимает

scala> def factorial(n: Int):Int = if(n <= 1) 1 else n * factorial(n-1) factorial: (n: Int)Int scala> val test: ^(factorial(5)) = 102 <console>:14: error: type mismatch; found : Int(102) required: Int(120) val test: ^(factorial(5)) = 102 ^

офигеть же

Oleg
27.04.2017
13:07:45
вот вот

Denis
27.04.2017
13:08:09
может это ветка какая в шейплесе

Oleg
27.04.2017
13:08:09
очень похоже на какой-то пул-реквест в шейплесс, который ещё не в основной репе

Denis
27.04.2017
13:08:27
хотя это 2013 год

Denis
27.04.2017
13:09:03
Welcome to Scala version 2.11.0

Написал в гист, может ответит

Aleksey
27.04.2017
13:11:01
Я к чему это вообще. Подумалось, что было бы офигенно круто иметь что-то вроде классического движка бизнес-правил но на тайплевеле. Можно ведь считать мэтчигн имплистов констрейнт-солвером, да?

Oleg
27.04.2017
13:13:29
ой.... та же морда

меж тем это либа - порт хаскелевской либы Никиты Волкова, автора strelka, аналога vodka Заметили, что у Фомкина и Волкова одинаковые мысли в голову приходят?

Google
Oleg
27.04.2017
13:20:43
но без крышечки

все сложные операции по обработке синглтон строк, чисел и т.п. нужно будет либо делать с помощью макроса

либо конвертировать в гигантские тайплевел структуры типа Nat ов и HList ов и делать очень долго

полцарства за крышечку

Iaroslav
27.04.2017
13:34:36
есть вопрос. А как хендлить ошибки в интерпретаторе для фримонады? Или просто трансформировать в что-то типа MonadError? А если надо бы прервать интерпретацию, например? И не идти дальше по иерархии.

Denis
27.04.2017
13:35:29
Есть вариант сделать отдельную алгебру для ошибок

а если в интерпретаторе, то финальная монада должна поддерживать ошибки

.
27.04.2017
13:37:04
Всем доброго времени суток, может у кого-то есть опыт использования jwt с akka-http, если да, подскажите библиотеки или литературу. Спрашиваю тут т.к. в том числе интересует субъективный опыт.

Iaroslav
27.04.2017
13:37:55
а если в интерпретаторе, то финальная монада должна поддерживать ошибки
Ага. Но выполнение ж пойдет дальше по AST. Я не могу этого прервать. Только если выпущу исключение за пределы интерпретатора. А если не выпущу, то трансформация пойдет дальше, не смотря на то, что состояние может быть невалидным. Так же?

Denis
27.04.2017
13:38:46
не пойдет, free паразитирует на семантике flatMap финальной монады

Denis
27.04.2017
13:38:59
если она не пойдет после ошибки то и фри не пойдет

Oleg
27.04.2017
13:39:26
а если только free вокруг, то точно не пойдёт

Iaroslav
27.04.2017
13:39:41
Точно же. Спасибо

Alexander
27.04.2017
13:44:59
https://gist.github.com/Tvaroh/a2fd772f7a66aaafc2ea48ce1fc3646d как думаете - будет тут extends AnyVal работать?

Vitalii
27.04.2017
13:46:26
гайс, есть варинты рефакторинга без количества больше количества if ? https://gist.github.com/anonymous/4894121e1cda018916bd896586159565

Alexander
27.04.2017
13:47:58
чтобы не аллоцировался имплиситный класс при таггинге?

Vitalii
27.04.2017
13:48:36
в пулл реквесте на проекте комент есть от индуса ревьюера: Refactor the code and avoid multiple if checks

Google
Vitalii
27.04.2017
13:48:52
вот и думаю варианты, но чет не могу придумать

Denis
27.04.2017
13:49:25
Ад какой

беги оттуда

Oleg
27.04.2017
13:51:16
чтобы не аллоцировался имплиситный класс при таггинге?
ClassCastException. нужно расставить параметры типа у asInstanceOf

?Ivan
27.04.2017
13:51:48
вот и думаю варианты, но чет не могу придумать
сделай ADT прям в функции и pattern matching, а потом беги

Admin
ERROR: S client not available

Alexander
27.04.2017
13:51:57
хм, а тайп инференс куда делся, ща проверю

http://stackoverflow.com/questions/14929422/should-implicit-classes-always-extend-anyval

Oleg
27.04.2017
13:53:33
хм, а тайп инференс куда делся, ща проверю
Такая фигня постоянно, нужно явно ставить

но вопрос был - зачем методы

Alexander
27.04.2017
13:53:59
поправил gist

не понял вопрос

Oleg
27.04.2017
13:54:45
ну в shapeless обычно просто x: A @@ X = tag(a)

не пойму профит от метода

Alexander
27.04.2017
13:55:49
что такое tag у тебя в примере?

какой профит от явного указания типа?

val login = "foo".@@[Login]

Oleg
27.04.2017
13:56:38
то, откуда маквайр скопипастил свои теги

т.е. это - копипаста второго порядка у Сабина

Google
Alexander
27.04.2017
13:57:29
в шейплесе сначала функция, здесь можно в ооп стиле

Alexander
27.04.2017
13:58:07
чё?

Oleg
27.04.2017
13:59:33
не хотелось спорить о терминах, но dot notation - это не более ООП, чем ФП стиль в скале

Alexander
27.04.2017
14:00:13
короче, удобнее так, разница вроде очевидна

Alexander
27.04.2017
14:00:40
этого и не требуется :)

вопрос-то о другом

Oleg
27.04.2017
14:00:49
яркий пример

Alexander
27.04.2017
14:02:29
мне не интересно продолжать это сравнение object tag { def apply[U] = new Tagger[U] trait Tagged[U] type @@[+T, U] = T with Tagged[U] class Tagger[U] { def apply[T](t : T) : T @@ U = t.asInstanceOf[T @@ U] } } Здесь для каждого тага создаётся объект Tagger

Oleg
27.04.2017
14:03:51
case class Foo ( db: Database @@ LongBusinessIdentityName ) implicit val foo1 = Foo( tag ( mkDatabase ("longBusinessIdentity") )) implicit val foo2 = Foo( mkDatabase ("longBusinessIdentity").@@[LongBusinessIdentityName]) implicit val fooBad = Foo (mkDatabase ("longBusinessIdentity").@@) // - throws java.lang.ClassCastException: Database cannot be cast to scala.runtime.Nothing$

Alexander
27.04.2017
14:03:56
не вижу копипасты из шейплеса, по-моему это адаптировалось скорее из Scalaz

Oleg
27.04.2017
14:04:18
по крайней мере были, пока Майлз не придумал эти в своём блоге

Alexander
27.04.2017
14:06:17
что мы сейчас обсуждаем, и что иллюстрирует код выше? extends AnyVal должен работать в моём случае

Oleg
27.04.2017
14:06:39
что мы сейчас обсуждаем, и что иллюстрирует код выше? extends AnyVal должен работать в моём случае
ну я сразу сказал, что компилится, даже подсказал, что поправить

Страница 628 из 1499