@haskellru

Страница 1466 из 1551
Maxim
14.09.2018
16:42:59
там впрочем на сайте ссылка должна быть

ну нет, по консольному мы гайд написали ;)

Anton
14.09.2018
16:43:22
Огромный плюс за это

Maxim
14.09.2018
16:45:03
^^

Google
Anton
14.09.2018
17:07:59
Denis
14.09.2018
17:39:46
За ссылку на туториал спасибо
а вот еще с reflex-frp https://hexagoxel.de/postsforpublish/posts/2017-10-30-brick-plus-reflex.html

Denis
14.09.2018
17:40:48
да, пожалуй это лучшая либа для frp

Anton
14.09.2018
17:42:58
Подтверждаю, раньше на стрелочных фрп сидел, но монадные гораздо удобнее

Denis
14.09.2018
17:44:41
Подтверждаю, раньше на стрелочных фрп сидел, но монадные гораздо удобнее
интересно, если есть стрелочные, то пожалуй учитывая тот факт, что стрелка это строгий профунктор, то можно сделать frp либу на профункторах?

Anton
14.09.2018
17:45:18
Наверняка можно

Denis
14.09.2018
17:45:50
я просто реализаций не находил

Anton
14.09.2018
17:46:35
Да самих стрелочных две три имплементации

Maxim
14.09.2018
17:48:07
о, а киньте что-нибудь более-менее фундаментальное про фрп почитать

Maxim
14.09.2018
17:52:42
спасибо!

Google
Denis
14.09.2018
17:54:02
ну и zoo of frp https://github.com/gelisam/frp-zoo

Terminator
14.09.2018
20:45:49
@cut_4cut будет жить. Поприветствуем!

Anton
14.09.2018
21:41:09
Всё же bricks с reflex немного отгнил, т.к. последний апдейт 2017ого года. Придётся ребейзить снова на мастер и снова кишки либы экспозить (что сделано в том туториале)

Yuriy
15.09.2018
13:37:54
надо такую для Хаскеля сделать, с операторами из base и lens https://www.ipv6buddy.com

Anton
15.09.2018
14:05:46
https://hackage.haskell.org/package/brick
Спасибо, уже вожусь с ней

std::uv
15.09.2018
15:20:13
А кто-нибудь в курсе ситуации с полиморфизмом структур, вроде пару лет назад собирались реализовать возможность писать тип 'любая структура в которой есть такие-то поля', но я не нашел ничего подобного в релиз ноутс.

kana
15.09.2018
15:23:37
http://hackage.haskell.org/package/base-4.11.1.0/docs/GHC-Records.html

пока только это

{-# LANGUAGE DuplicateRecordFields, DataKinds, FlexibleContexts, TypeApplications #-} import GHC.Records data A = A { a :: Int } deriving Show data B = B { a :: Int, b :: String } deriving Show f :: (Show r, HasField "a" r Int) => r -> String f r = mconcat [ "Record " , show r , " has field 'a' with value " , show (getField @"a" r) ] main = do putStrLn $ f (A 10) putStrLn $ f (B 20 "hello") -- Record A {a = 10} has field 'a' with value 10 -- Record B {a = 20, b = "hello"} has field 'a' with value 20

std::uv
15.09.2018
15:34:39
Понял, спасибо. Кстати собачек ещё не было когда в последний раз смотрел, а тут ещё и со строками. Видимо только синтаксического сахара не хватает.

kana
15.09.2018
15:36:04
это TypeApplications (и DataKinds для "строк")

Yuriy
15.09.2018
15:40:38
до собачек пользовались Proxy для достижения такого же эффекта

и DataKinds не ново

из нового только HasField

Imants
15.09.2018
15:46:43
Удобно. Пригодится. Пасиб!

Yuriy
15.09.2018
15:54:48
Imants
15.09.2018
15:56:02
Не найти ?: https://www.haskell.org/hoogle/?hoogle=IsLabel

Google
std::uv
15.09.2018
15:59:28
https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/OverloadedLabels

A new module GHC.OverloadedLabels defines the IsLabel class

Imants
15.09.2018
16:07:12
Определение класса IsLabel есть на hackage?

kana
15.09.2018
16:09:24
http://hackage.haskell.org/package/base-4.11.1.0/docs/GHC-OverloadedLabels.html

Yuriy
15.09.2018
16:09:51
A64m
15.09.2018
16:15:49
А какому классу?
{-# LANGUAGE AllowAmbiguousTypes , FlexibleInstances , MultiParamTypeClasses , ScopedTypeVariables , TypeApplications , DuplicateRecordFields , OverloadedLabels , FlexibleContexts #-} module Records where import GHC.OverloadedLabels import GHC.Records instance HasField x r a => IsLabel x (r -> a) where fromLabel = getField @x fb r = if #bar r then #foo r else 0 f1 = fb $ FooBar 42 True -- 42 f2 = fb $ BarFoo True 24 -- 24 data FooBar = FooBar { foo :: Int, bar :: Bool } data BarFoo = BarFoo { bar :: Bool, foo :: Int }

kana
15.09.2018
21:44:12
смотрите какую бесполезную множество раз запиленную неэффективную штуку запилил https://gist.github.com/kana-sama/e883549d4e7c44cf854f233115a4ac93 кастомные рекорды на символах + структурный полиморфизм (?) + функция построения рекорда (самое геморное)

Владислав
16.09.2018
06:10:39
На типы надейся, а тест не плошай.

Maxim
16.09.2018
13:08:33
Народ, есть такая задача - сказать стеку, что при обновлении одного файла в репе надо пересобрать кастомный Setup.hs и обязательно перезапустить его configure Пробовал extra-source-files в кабале и TH-ный addDependentFile Это приводит к тому, что Setup.hs когда надо пересобирается, но вот configure заново не делается, сразу идёт build

Alexander
16.09.2018
13:38:22
alias stack=cabal (извините)

а на самом деле посмотреть документацию по setup-depends и можно ли там зависимость от файла сделать

Maxim
16.09.2018
13:39:39
alias stack=cabal (извините)
можно подумать это проблема чисто стека

Alexander
16.09.2018
13:40:28
пока ты не проверил поведение кабал-инсталл этого нельзя исключать

Maxim
16.09.2018
13:40:48
ну я в любом случае не могу уйти со стака :)

Alexander
16.09.2018
13:41:12
https://www.haskell.org/cabal/users-guide/developing-packages.html?highlight=setup%20depends#pkg-field-custom-setup-setup-depends

Maxim
16.09.2018
13:41:46
ну так там только пакеты можно указать

kana
16.09.2018
14:24:44


Google
kana
16.09.2018
14:28:49
вообще думается мне, что делать рекорды на отдельных тайп-мапах - тупиковый путь, не получится без грязных трюков связать структуру рекорда с структурой на типах, нужно фьюзить реализацию рекорда с реализацией мапы, как выше проблемы появлятеся на на сеттерах, которые меняют тип полей кто-нибудь разбирался с устройством винила, может пояснить как там?

@A64m_qb0 не видел ли ты где готовой функции, конвертирующей линзы вида s -> (a, b -> t) в (a -> f b) -> (s -> f t)?

A64m
16.09.2018
15:00:59
не помню такого

Iva
16.09.2018
15:00:59
Почему у линз такое контр-интуитивное название?

A64m
16.09.2018
15:01:13
в смысле?

kana
16.09.2018
15:01:20
почему контриннутивное?

Admin
ERROR: S client not available

kana
16.09.2018
15:01:39
многие умудряются связывать законы физических линз на законы хаскельных линз

Anton
16.09.2018
15:01:46
Линза это инструмент, который позволяет фокусироваться на части структуры и работать только с ней

std::uv
16.09.2018
15:02:54
я не шарю в линзах, но помню читал какой-то туториал и там было про зум https://hackage.haskell.org/package/lens-4.6.0.1/docs/Control-Lens-Zoom.html вот я тогда подумал "ааа ну теперь понятно почему линзы"

Maxim
16.09.2018
15:04:41
ох зум

меня немного выбесило когда с этим разбирался, что есть zoom, а есть magnify, блин

делают по сути одно и то же

kana
16.09.2018
15:05:05
type SimpleLens s t a b = s -> (a, b -> t) lensFromSimple :: SimpleLens s t a b -> Lens s t a b lensFromSimple l f s = let (a, g) = l s in fmap g (f a) ну собственно функция-то просто пишется, просто вроде оба подхода довольно популярны, наверняка где-то есть что-то подобное

Anton
16.09.2018
15:07:55
Оно вообще на проектор из функана похоже.
Проекторы как метафора не поддерживают композицию

Sergey
16.09.2018
15:25:45
линзы должны быть на профункторах, у меня все
Линзы, которые (a -> f b) -> (s -> f t) - это частный случай линз на профункторах ? Сложилось такое впечатление. Если верно, то какие дополнительные возможности появляются ?

геттеры и сеттеры с модификаторами выражаются и на простом функторе, а что можно сделать с дополнительным контравариантным параметром?

kana
16.09.2018
15:28:58
не помню такого
окей, а есть инструмент для вановских линз, чтобы и читать, и писать (за один раз). То есть прочитать и получит сеттер

а, ну это сама линза же

Google
Iva
16.09.2018
15:34:44
Проекторы как метафора не поддерживают композицию
соответствующих размерностей поддерживают же

p : A->B q : B->C скомпозиционируются

Yuriy
16.09.2018
16:23:09
делают по сути одно и то же
так ведь ask и get тоже делают одно то же, а называются по-разному

Maxim
16.09.2018
16:23:32
хм...

ну вообще да

тем не менее, я считаю что немного confusing

kana
16.09.2018
16:24:52
https://gist.github.com/kana-sama/6ac112aff933a34ea12c4878a80755fd переписал вчерашние рекорды, теперь: a) вся работа с ними изначально через линзы b) они не статичны, то есть можно менять линзами типы полей c) красивые лейблы для линз все бы круто, но они не работают) Там оверлапинг инстанов для генерации линз, которого быть не должно вообще. Тыкал на шару OVERLAPS/PABLE/PING, не помогло, мануал тоже почитал, не помогло (то есть они говорят как правильно расставить приоритет, но там оверлапинг в принципе не должен был появиться). Может кто помочь? Для кода нужны только lens, ошибка возникает в самом конце (в месте использования), инстансы так же выделил комментариями

Alexander
16.09.2018
16:29:16
мне лень глядеть после baal но тогда лейблов не было

и сейчас можно проще

а блин нету на гитхабе :/

kana
16.09.2018
16:30:46
ну проблема выше к лейблам не привязана, она и без них, проблема чисто в рекурсивных инстансах, мб попробую сделать абстрактный пример

Alexander
16.09.2018
16:31:01
я бы просто показал что у меня есть может быть помогло

у меня были record над вектором Any и линзы которые могут менять типы

но к сожалению я не запушил это на гитхаб и оно на другом ноуте

просто у тебя может совсем по другому сделано, раньше часть путей закрыто было

я может завтра-послезавтра осилю смотреть если силы и польза будет :/

Страница 1466 из 1551