
Semyon
22.12.2016
07:37:40
у меня технологическая шизофрения
мне норм

Mikhail
22.12.2016
07:38:20
@dveim он послал нас нахуй, Карл

Semyon
22.12.2016
07:38:23
btw, расскажите мне позязя

Google

Semyon
22.12.2016
07:38:35
имплиситы каким образом относятся к хаскелению?
насколько я понимаю это такой красивый костыль

Oleg
22.12.2016
07:38:48

Semyon
22.12.2016
07:38:51
и к хаскелению отношения имеет не больше, чем кложурение

Mikhail
22.12.2016
07:39:05
Олегу похоже на корпоративе не дали)

Oleg
22.12.2016
07:39:30
Нет, имплиситы - основной инструменд для bounded parametric polymorphism в скале, наравне с тайпклассами в хаскеле

Semyon
22.12.2016
07:39:50
хм
но тайпклассы в хаскеле намного более имплиситные :)

Oleg
22.12.2016
07:40:19
Если посмотришь приблизительно все либы на typelevel.org

Semyon
22.12.2016
07:40:22
в смысле там не бывает ситуации, когда ты такой "ой, у меня тут значение из ёбаного ниоткуда!"

Oleg
22.12.2016
07:40:32
Они все архитектурно завязаны на имплиситах

Semyon
22.12.2016
07:40:48
в хаскеле?

Google

Semyon
22.12.2016
07:40:52
можно примерчик?

Oleksandr
22.12.2016
07:41:13
ясно, почему тинькоф так долго ищет скалистов -- это ж надо найти согласного работать с такими типами

Semyon
22.12.2016
07:41:20
для ясности, на хаскеле я писал сильно меньше, чем на скале, поэтому правда хочу картину мира утрясти

Oleg
22.12.2016
07:41:22
ты, видимо, не добирался до того, чтобы хардкорно пособачить внутри servant а или типо того

Semyon
22.12.2016
07:41:34
возможно

Oleg
22.12.2016
07:42:04

Semyon
22.12.2016
07:43:00
Например, имплиситную передачу параметров в функцию в хаскеле хочу увидеть

Mikhail
22.12.2016
07:43:02
Чукча не читатель, чукча писатель) Олегу же все равно, что речь шла за общее кол-во имплиситов когда их становится слишком много) Но твой аргумент я запомню, да)

Oleg
22.12.2016
07:45:00

Semyon
22.12.2016
07:45:08
да что угодно подойдет

Oleg
22.12.2016
07:47:12
https://hackage.haskell.org/package/containers-0.5.9.1/docs/src/Data.Sequence.Internal.html#FingerTree
Вот эта штука
Всё её foldr ы, Sized и прочее
Реализованы через полиморфную рекурсию
В хаскелл вообще любая функция с тайпклассами в описании имеет две формы -
Первая - это потенциально мономорфная, работает как в Rust
Если компилятор может определить точно все инстансы
Он эмбеддит их в специализированную версию функции и использует её, инлайнит там всё и т.п.
Вторая - это когда компилятор не может заранее определить все инстансы, которые могут быть использованы в реализации. Случай полиморфной рекурсии - это как раз тот
В этом случае ghc передаёт в функции такие-же неявные параметры

Google

Oleg
22.12.2016
07:50:16
Грубо говоря, как scala
Но это очень грубо, ты понимаешь
Тогда реализация строит формулы вычисления одних инстансов из других, грубо говоря, построения одних имплиситов из других.
Всё это очень приближенное описание, т.к. в хаскеле есть свои имплиситы
Но они юзаются чуть чаще, чем никогда https://wiki.haskell.org/Implicit_parameters

Semyon
22.12.2016
07:52:28

Oleg
22.12.2016
07:52:35

Semyon
22.12.2016
07:52:37
я про сильно более приземленную вещь говорю

Oleg
22.12.2016
07:52:46
Про какую?

Semyon
22.12.2016
07:53:02
например когда у тебя в вызове, ну я хз, функции работы с транзакцией БД неожиданно оказывается неявно переданный коннект к БД
но в целом я тебя понял
принимается

Oleg
22.12.2016
07:53:41
Ну когда ты включишь в хаскелл overlapping instances
И накодишь говна
У тебя там тоже говно такое же может быть, и стэковерфлоу в компиляторе, и что угодно.
Понятно, что хаскелл гораздо более рестриктив.

Denis
22.12.2016
08:03:41

Semyon
22.12.2016
08:04:02

Denis
22.12.2016
08:45:00
Кто нибудь знает, есть ли общепринятое название для типов вида (* -> *) -> * ?

Google

Semyon
22.12.2016
08:45:55
никогда не задумывался о названии :)
сигнатура вроде

Denis
22.12.2016
08:46:59
ну я к тому что * -> * называют функтор (хотя это несовсем верно с точки зрения ТК)

Aleksei
22.12.2016
08:47:32
фуфунктор
простите

Admin
ERROR: S client not available

Denis
22.12.2016
08:47:42
:))

Semyon
22.12.2016
08:48:01

Aleksey
22.12.2016
08:50:50
ну в смысле a -> b

Oleg
22.12.2016
08:54:48
если не принимать во внимание arrow transformers, которые
( * -> * -> * ) -> * -> * -> *, то монад и апликатив трансформеры так и выглядят

Aleksei
22.12.2016
08:57:29
спасибо что нахуй не послал второй раз за день )

Oleg
22.12.2016
08:58:05
по скалосвски, как назвать типы вроде
Foo[_[_]]

Denis
22.12.2016
09:00:05
Я тут дошел просто до final case class ProductK[F[_[_]], G[_[_]], A[_]](fa: F[A], ga: G[A])
и думаю есть ли названия какие у F
и G

Lev
22.12.2016
09:01:58

Google

Denis
22.12.2016
09:02:46
везде есть свой тони моррис

Aleksei
22.12.2016
09:03:09

Lev
22.12.2016
09:03:35

Oleg
22.12.2016
09:03:40

Aleksei
22.12.2016
09:04:11

Daniel
22.12.2016
09:04:32

Andrey
22.12.2016
09:05:06
А можно пофотопить немного про техническую сторону тинькова, со стороны пользователя?

Oleg
22.12.2016
09:05:27

Oleksandr
22.12.2016
09:05:32
а обьясните мне, почему Дмитрия (из pro.jvm) забанили, а вот этого хмыря -- нет?

Aleksei
22.12.2016
09:05:54
и мне заодно
но вообще я за свободу выражения

Oleksandr
22.12.2016
09:07:03
посыл нах -- не свобода выражения, а мудачество

Denis
22.12.2016
09:07:05
Ну, да правил у нас не написано, и любой бан - это субъективная реакция админа

Aleksei
22.12.2016
09:07:42
для этого и нужна свобода выражния, чтобы сразу понятно было кто есть кто =)

Oleg
22.12.2016
09:08:20

Oleksandr
22.12.2016
09:08:27
есть железное правило -- no arrogance

Oleg
22.12.2016
09:09:10