Oleg 
    
    
        
        
        
        видимо, какой-то TH подразумевается
    
 
    
    Dmitry 
    
    
        
        
        
        стоп, зачем?
    
 
    
    Oleg 
    
    
        
        
        
        @notxcain https://wiki.haskell.org/Template_Haskell
    
 
    
    Denis 
    
    
 
    
    Oleg 
    
    
        
        
        
        если не генерить новые типы то https://wiki.haskell.org/Generics
    
 
    
    Denis 
    
    
        
        
        
        Думаю все такие генерить
    
 
    
    Oleg 
    
    
        
                    
                        
                            
                            стоп, зачем?
                        
                    
                
        
        
        у пацана есть либа для очень очень Free алгебр для scala на макросах, видать, на хачкель расширятся
    
 
 
    
    Denis 
    
    
 
    
    Alexander 
    
    
        
        
        
        зачем там TH?
    
 
    
    Dmitry 
    
    
        
        
        
        +1
    
 
    
    Alexander 
    
    
        
        
        
        я пока пытаюсь понять условие очередного вопроса
    
 
    
    Oleg 
    
    
        
                    
                        
                            
                            зачем там TH?
                        
                    
                
        
        
        Ну ему надо определить новые data на основе предыдущих
    
 
 
    
    Denis 
    
    
        
        
        
        Есть  data Foo f = Foo { bar :: forall a. a -> f a,  baz :: Int -> f String }
    
 
    
    Oleg 
    
    
        
        
        
        Т.е. базу для Free он генерит
    
 
    
    Alexander 
    
    
 
    
    Oleg 
    
    
        
        
        
        типа даёшь ему DSL, а он для тебя генерит data для Free под этот DSL
    
 
    
    Denis 
    
    
        
        
        
        нужно во время компиляции вывести тип 
        data FooOp a where
          Bar :: a -> FooOp a
          Baz :: Int -> FooOp String
        и две функции
        to :: Foo f -> (FooOp ~> f)
        from :: (FooOp ~> f) -> Foo f
    
 
    
    Denis 
    
    
        
        
        
        поправил опечатку
    
 
    
    Alexander 
    
    
        
        
        
        FooOp ~> f что значит?
    
 
    
    Alexander 
    
    
        
        
        
        f :: * -> *
    
 
    
    Denis 
    
    
        
        
        
        forall a. FooOp a -> f a
    
 
    
    Denis 
    
    
        
        
        
        натуральная трансформация, морфизм в категории эндофункторов.
    
 
    
    Oleg 
    
    
        
        
        
        но в хаскеле в GADT меньше бойлерплейта и больше свободы, думаю, что юзеры предпочтут писать их ручками
    
 
    
    Denis 
    
    
 
    
    Denis 
    
    
        
        
        
        и тот же Foo можно как тайпкласс использовать.
    
 
    
    Alexander 
    
    
        
        
        
        ну в скале нету когеретных классов типов
    
 
    
    Alexander 
    
    
        
        
        
        ладно, если полный код есть я могу подумать, если кто другой не напишет как надо до этого
    
 
    
    Denis 
    
    
        
        
        
        Да это так, развлечения дла мозга. А что есть в хаскелл, для построения кластерных систем? Например раскидать поведения по нескольким нодам которые друг про друга знают и умеют роутит сообщения к нужной, где есть некий стейт для выполнения операций?
    
 
    
    Dmitry 
    
    
        
        
        
        cloud haskell ?
    
 
    
    Alexander 
    
    
        
        
        
        да
    
 
    
    Denis 
    
    
        
        
        
        http://haskell-distributed.github.io/documentation.html#concurrency-and-distribution
    
 
    
    Dmitry 
    
    
        
        
        
        а почему мы его не используем, что бы ноды снюхивать? вместо серванта?
    
 
    
    Denis 
    
    
        
        
        
        звучит как то что надо
    
 
    
    Alexander 
    
    
        
        
        
        не знаю
    
 
    
    Alexander 
    
    
        
        
        
        @notxcain если что его меинтейнеры в этом чятике в том числе
    
 
    
    Alexander 
    
    
        
        
        
        @voidlizard он большой зверь очень в некоторых случаях проще архитектуру можно построить
    
 
    
    Alexander 
    
    
        
        
        
        мы может зопилим более адекватное решение позже, но это ребята в другом отделе делают, и я пока не очень впечатлен тем что там происходит, хотя хорошие идеи есть
    
 
    
    Misha 
    
    
        
                    
                        
                            
                            но суть та же класс для поиска 1 и класс для постиска списка
                        
                    
                
        
        
        попробовал, брат жив, но пока Всё Плохо:
        getIdx :: IdxLookup ixs i v => GenStore ixs k v -> Key i -> GenIdx i v
        и мне понятно, сообщают, что ixs :: [*], из-за определения GenStore. И я как-то туплю и не могу найти куда мне в эту сигнутуру вписать  ixs :: [*]
    
 
 
    
    Misha 
    
    
        
        
        
        так, пора гист завести видимо
    
 
    
    Alexander 
    
    
        
        
        
        не понимаю вопроса :(
    
 
    
    Misha 
    
    
        
        
        
        да, очень путано
    
 
    
    Misha 
    
    
        
        
        
        https://gist.github.com/lolepezy/272ee5d708319f040673e150a7ccea60
    
 
    
    Misha 
    
    
        
        
        
        вот
    
 
    
    Misha 
    
    
        
        
        
        getIdx не тайпчекается, потому что нужен констрейнт, что ixs :: [*]
    
 
    
    Misha 
    
    
        
        
        
        и я чотопэ
    
 
    
    Misha 
    
    
        
        
        
        то есть там возможно много остального неправильного тоже, но там я потом разберусь
    
 
    
    Alexander 
    
    
        
        
        
        я через час где-то посмотрю, ок?
    
 
    
    Misha 
    
    
        
        
        
        без проблем, конечно
    
 
    
    Misha 
    
    
        
        
        
        это фича, там скорее всего еще куча зависимстей
    
 
    
    Misha 
    
    
        
        
        
        будет длинно
    
 
    
    Alexander 
    
    
        
        
        
        угу там proxy ivs, написатт
    
 
    
    Misha 
    
    
 
    
    Alexander 
    
    
        
        
        
        поменяй ivs там на Proxy ivs
    
 
    
    Pavel 
    
    
        
        
        
        Всем доброго времени суток. Есть ли тут emacs-соводы? Не подскажите ли какой набор плагинов на сегодня лучше всего юзать для разработки haskell?
    
 
    
    Kirill 
    
    
        
        
        
        Spacemacs+haskell-layer удобен. 
        Все сразу из коробки работает.
    
 
    
    Pavel 
    
    
        
        
        
        У меня просто emacs - я так понял layer - это сборка пакетов? слой такой?
    
 
    
    Pavel 
    
    
        
        
        
        ща гляну из чего оно состоит
    
 
    
    Evgeniy 
    
    
        
        
        
        http://spacemacs.org/layers/+lang/haskell/README.html
    
 
    
    Алдар 
    
    
 
    
    Kirill 
    
    
        
        
        
        Да. И в этом его плюс. Что ничего не нужно самому конфигурировать.
    
 
    
    Pavel 
    
    
        
        
        
        я пробовал spaceemacs - както монстровато.. обратно на emacs со своими настройками переполз. Ну дело вкуса. Настроить самому наоборот в кайф
    
 
    
    Evgeniy 
    
    
        
        
        
        тут сам слой описан, можно глянуть что за пакеты https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Blang/haskell
    
 
    
    Pavel 
    
    
        
        
        
        ну во общем я так понял в этом слое самое актуальное и рабочее на сегоднешний день. Благодарю! Попробую разобраться
    
 
    
    Pavel 
    
    
        
        
        
        а менеджер проектов какой используется. Ну чтобы создать проект. Произвести его тестирвоание и сборку?
    
 
    
    Pavel 
    
    
        
        
        
        Это cabal - я правильно понял?
    
 
    
    Alexander 
    
    
        
        
        
        щас многие любят стеком пользоваться
    
 
    
    Alexander 
    
    
        
        
        
        небезосновательно
    
 
    
    Alexander 
    
    
        
        
        
        indexes у тебя не *
    
 
    
    Alexander 
    
    
        
        
        
        он не может существовать на value level
    
 
    
    Misha 
    
    
        
        
        
        ага!
    
 
    
    Alexander 
    
    
        
        
        
        https://gist.github.com/lolepezy/272ee5d708319f040673e150a7ccea60#file-kv-hs-L47 эта строка
    
 
    
    Alexander 
    
    
        
        
        
        как proxy - ты передать можешь
    
 
    
    Misha 
    
    
        
        
        
        окей, это ясно. Но как тогда доставать что-то из конкретного value?
    
 
    
    Misha 
    
    
        
        
        
        примерно понял куда копать
    
 
    
    Alexander 
    
    
        
        
        
        смотря тчо за value
    
 
    
    Misha 
    
    
        
        
        
        обновил до чего-то компилирующегося
    
 
    
    Misha 
    
    
        
        
        
        теперь правда он жалуется на overlapping instances при попытке вызвать getIdx