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