@frp_ru

Страница 98 из 420
Дмитрий
11.07.2017
22:34:50
Синтаксис такой будет

что бы это ни значило

Denis
11.07.2017
22:35:14
и все равно я Algebra без этого гемороя не напишу HKT

Дмитрий
11.07.2017
22:36:52
Ну да

Google
Denis
11.07.2017
22:37:27
вот когда hkt появится вот тогда и поговорим :D а так это два поделия

Дмитрий
11.07.2017
22:38:05
link?
https://github.com/facebook/flow/releases/tag/v0.49.0

Added support for parsing opaque types. Type system support coming soon.

В 50 версии на гитхабе вроде уже вообще должно работать)

andretshurotshka?❄️кде
12.07.2017
05:59:36
спамеры

Aleh
12.07.2017
06:53:25
Denis
12.07.2017
09:18:17
https://github.com/gpujs/gpu.js

Дмитрий
12.07.2017
10:06:27
А что это Оо
Хороший вопрос ? Я увидел в релизе загадочный анонс opaque types, пошерстил в репе и нашёл, как они будут выглядеть; это — пример из валидного теста. Предназначение могу только предполагать)

Lulz
12.07.2017
10:06:59
Aleh
12.07.2017
10:08:58
https://en.wikipedia.org/wiki/Opaque_data_type

Google
Дмитрий
12.07.2017
10:09:27
Да, эту статью я в первую очередь открыл)

Aleh
12.07.2017
10:09:43
как это связано с этим синтаксисом неясно от слова совсем

Дмитрий
12.07.2017
10:12:17
Вот да)

? animufag ?
12.07.2017
10:13:51
а ссылку можно на что-нибудь? на пул реквест или то где ты достал ту строку

не гуглится никак

Дмитрий
12.07.2017
10:14:15
какие преположения?
Новый тип на основе старого, например. Видишь как бы контейнер меняется, как monad transformer

Aleh
12.07.2017
10:14:17
Дмитрий
12.07.2017
10:14:35
Ща сам файл скину

Интригует, что это далеко не всё, что добавили в теччении всего одного релиза

https://github.com/facebook/flow/blob/master/src/parser/test/flow/types/opaque_aliases/valid/opaque_subtype.js

Aleh
12.07.2017
10:21:26
хыхы https://github.com/gcanti/recursion-schemes-ts

Denis
12.07.2017
10:22:16
до пизды

на анаморфизме js дохнет

потому что лени нет

? animufag ?
12.07.2017
10:23:20
крч это как алиасы. declare opaque type FBID = number; видимо предназначены для экспорта

хотя хз в счём разница тогда с алиасами - зачем новое слово

Дмитрий
12.07.2017
10:23:45
Интригует, что это далеко не всё, что добавили в теччении всего одного релиза
А именно — добавили $ElementType — mapped types const obj = { number: 1, string: "test" } function getValue<Key: string>(key: Key): $ElementType<typeof obj, Key> { return obj[key]; } const x: number = getValue('number') const y: string = getValue('string') // errors below // const a: string = getValue('number') // const b: number = getValue('string') И, та даам, $Values — видимо решили проблему с $ObjMap

хотя хз в счём разница тогда с алиасами - зачем новое слово
Они непрозрачны и не равняются старому типу, opaque type Num = number Num не будет принимать значения number

Старые типы были всегда структурно равны

? animufag ?
12.07.2017
10:26:22
хмм. opaque... непрозрачны...

Google
? animufag ?
12.07.2017
10:26:40
ну ладно ок

крутая штука

Aleh
12.07.2017
10:27:17
а как для них конструктор объявить?

const a: Num = ???

? animufag ?
12.07.2017
10:29:03
наверное вывод будет

ну или тип они только в одну сторону приводятся

Aleh
12.07.2017
10:29:45
ладно, оставим гадания на кофейной гуще

? animufag ?
12.07.2017
10:29:55
функция с Num аргументом принимает number но не наоборот

Дмитрий
12.07.2017
10:32:57
ХЗ

andretshurotshka?❄️кде
12.07.2017
10:33:33
)

Дмитрий
12.07.2017
10:36:41
Я только вижу, что в примере мы как-то поменяли контейнер, сохранив дженерик) Если это так, то на этом можно строить HKT и прочее

? animufag ?
12.07.2017
10:37:39
да ну

в котлине вон тоже тайпалиасы с дженериками

никак не помогает НКТ

Дмитрий
12.07.2017
10:40:51
Я просто давно экспериментировал с этим вслед за gcanti, вижу тут несколько новых идей для реализации ?

Denis
12.07.2017
10:53:52
он или я его мысли вчера прочиатли)) https://github.com/gcanti/recursion-schemes-ts/blob/master/src/index.ts#L5

Google
Дмитрий
12.07.2017
11:01:15
не сделать норм HKT ни в flow, ts...
У них абсолютно разные подходы, не надо обобщать) В flow нормальный вывод типов, проблема в отдельных косяках технического плана. Например existential type — мощная фича для механизма вывода типов. Но на другом уровне закостылили понятие файла и поэтому * работает только при объявлении и выводе в одном файле

Denis
12.07.2017
11:11:47
https://github.com/gcanti/recursion-schemes-ts/issues/1

надо обобщать для изоморфизма любого, а не для A -> Fix, Fix -> A

andretshurotshka?❄️кде
12.07.2017
11:19:27
клингонский ?

Denis
12.07.2017
11:20:02
алгебра должна быть не завязана на одном Fix

нужны только embed, project а все эти cata,ana,para и прочие просто выводятся через них

Vadim
12.07.2017
12:39:48
Читаю сейчас обсуждения насчет sanctuary, и ее сравнения с ramda. Он том насколько она более соответствует строгости следования fandasy-land и вообще работе с типами, по сравнению с ramda. И думаю, почему такие местные продвинутые люди как @xgrommx до сих-пор не перешли еще на sanctuary? )

Admin
ERROR: S client not available

Vadim
12.07.2017
12:44:10
В смысле, для тебя преимущества sanctuary не очевидны?

Строгость не нужна?

Denis
12.07.2017
12:44:25
какие? что это медленно?

у меня haskell и purescript есть для строгости

Vadim
12.07.2017
12:45:13
Я ее сам еще не использовал. Но судя по обсуждениям, я так понял, что медленность у нее начинается только если включены рантайм проверки

Denis
12.07.2017
12:45:25
еще в sanctuary filterM не правильный

Vadim
12.07.2017
12:46:51
у меня haskell и purescript есть для строгости
Это все-таки другие языки ) Я так понял что рамду ты используешь из-за необходимости работы в стэке js (сам вроде говорил)

Denis
12.07.2017
12:49:13
ох блин

я понял как сделать мутуморфизм

mutu :: Recursive t => (Base t (a, a) -> a) -> (Base t (a, a) -> a) -> t -> a mutu = go where go f g = g . fmap (go g f &&& go f g) . project

evenOdd :: Nat -> Bool evenOdd = mutu f g where f ZeroF = False f (SuccF (b, _)) = b g ZeroF = True g (SuccF(b, _)) = b

Google
Denis
12.07.2017
12:50:36
прелесть мутуморфизма вроде в том, что callstack элиминируется

а как вам такая рыба?)) infixr 9 <>< f <>< g = f . project . g

кто скажет зачем это?)

? animufag ?
12.07.2017
12:58:29
:t project

Denis
12.07.2017
12:59:07
ну почти тоже что и Fix

project :: Recursive t => t -> Base t t

? animufag ?
12.07.2017
13:01:34
Не, сдаюсь

Рекурсив, бейс

Denis
12.07.2017
13:04:01
это позволяет делать композиции для алгебр, потом просто скормить эту композицию в cata и это будет одна проходка для катаморфизма

(cata $ map'' (* 10) <>< map'' (* 100) <>< filter'' even) [1 .. 10]

бля

параморфизм через хистоморфизм myPara :: (Corecursive t, Recursive t) => (Base t (t, a) -> a) -> t -> a myPara psi = snd . histo (embed . fmap (fst . extract) &&& psi . fmap extract)

Сергей
12.07.2017
15:22:23
Denis
12.07.2017
15:22:58
это из стрелок, можно взять более категориальное например бифунктор

это значит \t -> (f t, g t)

f &&& g

cata проще через histo cata' :: Recursive t => (Base t a -> a) -> t -> a cata' f = histo (f . fmap extract)

Страница 98 из 420