Kirill
(удалён ненужный спам, сорри)
Alexander
а у нас поверх криптонита есть какие-нибудь утилиты для случайных вещей
Alexander
например мне нужно сделать случайный вектор из значений из списка p
Alexander
и есть Entropy Pool
Alexander
я могу как-то объединить это и получить результат?
Alexander
почему у Data.Text нету чего-то типа iterateN для создания
Alexander
только unfoldr в котором аккумулятор надо таскать руками
A64m
почему у Data.Text нету чего-то типа iterateN для создания
некогда писать итератен-ы, надо на велосипеде ехать
A64m
гринтеховцы, конечно, недостатком амбиций не страдают > mvp grin: - compiled abstract interpretation - recursion scheme - LLVM phd grin (Haskell): - GHC frontend - optimisations - tracing GC final grin (Haskell): - llvm types in GHC (i.e. SIMD vector) - memory layout control in GHC - ASAP compile time memory management (no GC) - fast compilation (via parallel transformations and abstract compilation) - memory debugger after final: - agda frontend - idris frontend - chunky recursive data transformations (for cache efficiency) (https://en.wikipedia.org/wiki/CDR_coding) (DPH Vectorisation + NESL / SPMD) - spmd compilation (kmett @ zurihac 2017) - fast jit + parallel optimisation / recompilation + runtime data migration possible impact: - applications in performance critical domains: games, graphics, scientific calcualtions - better score in benchmark game - performance: haskell quake =?= c quake The combination of GRIN, LLVM and ASAP memory management can prove that high performance computing is feasible in a high level language like Haskell.
Alexander
не надо video message..
Ilya
Подскажите плиз у меня есть Maybe a и я хочу по ней сделать Fold. То есть отдать две функции Nothing -> t и a -> t и получить на выходе t. Это по сути эквивалентно обыкновенному паттерн матчингу. Есть ли такая возможность?
Ilya
Вопрос вродеб дурацкий но чего то дефолтного я не нашел чтобы такое поведение описать
Big Bux Chungus
https://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:maybe
Cheese
в общем случае такая функция называется элиминатором
Aleksei (astynax)
А ещё есть такое название: case analysis
Aleksei (astynax)
maybe, either, bool - вот эти
Aleksei (astynax)
Nothing -> t - "слегка бесполезная" функция
Aleksei (astynax)
За исключением этого maybe, на которую выше ссылку дали, должна подойти
кана
Nothing -> t - "слегка бесполезная" функция
имелось в виду наверное просто t
Aleksei (astynax)
И я о том же
кана
Подскажите плиз у меня есть Maybe a и я хочу по ней сделать Fold. То есть отдать две функции Nothing -> t и a -> t и получить на выходе t. Это по сути эквивалентно обыкновенному паттерн матчингу. Есть ли такая возможность?
если тебе нужно именно способ автоматически выводить фолды из любых дата-типов, то посмотри в сторону рекурсивных схем я сейчас еще пробую через generic выводить в очень ограниченных случаях может даже Foldable подойти
Ilya
^ http://hackage.haskell.org/package/catamorphism-0.7.0.0
кана
ну на TH там есть несколько реализаций, а на генериках не нашел
A64m
ну для фолдов для любых типов есть дерайвинги из коробки
кана
ну для фолдов для любых типов есть дерайвинги из коробки
ему нужны нормальные элиминаторы, дуальные типу, а не натягивание фолдов списков на другие типы
кана
f(S a, r) = [a] f(a :*: b, r) = f(a) ++ f(b) f(C ss, r) = [g(f(ss), r)] f(a :+: b, r) = f(a) ++ f(b) f(D cs, r) = g(f(cs), r) g([], r) = r g((x:xs), r) = x -> g(xs, r) elim(a) = forall r. f(Rep(a), r) вывод фолда из генерика вроде такой будет, попробую реализовать теперь
кана
ну про maybe мне кажется он бы нашел и сам, надеюсь вопрос был обобщенный и потом специализирован перед отправкой сюда
кана
да, думаю да
Anonymous
@adudinov будет жить. Поприветствуем!
кана
ну тип я вывести смог, работать с генериками не так сложно как я думал ранее, если заранее расписать транформации
кана
а лол нет, нужно заменять рекурсию еще
Grigory
@kana_sama а как вскод удобно подсвечивает? // оффтоп
кана
это вопрос в том, удобно ли, или как сделать чтобы было удобно?
Grigory
это вопрос удобно ли и что сделать чтобы было удобно
кана
нет, неудобно, баги подсветки всплывают часто
кана
что сделать - не знаю, я просто отрубаю подсветку когда баги и пишу без нее
Grigory
понятно, жалко, спасибо
кана
собственно вот, осталось только генерацию самого элима написать (то есть самое основное)
Зигохистоморфный
Зигохистоморфный
и опять же https://github.com/oisdk/generic-church
кана
и это оба не то же
кана
обе имеют не ту сигнатуру, хоть вторая максимально близко
Зигохистоморфный
ну первое это я про женерик рекурсивные схемы
кана
data F f g = F { unF :: f (g (F f g)) } f :: (Functor f, Functor g) => (f a -> a) -> (g a -> a) -> (F f g -> a) f g h = g . fmap h . fmap (fmap (f g h)) . unF g :: (Functor f, Functor g) => (f (g a) -> a) -> (F f g -> a) g h = h . fmap (fmap (g h)) . unF какой из этих двух элиминаторов правальный
Ilya
Второй правильный, на мой взгляд (смотрел только на типы)
Ilya
А первый можно выразить через второй. То есть у первого сигнатура более общая, но выразительность на самом деле точно такая же
Ilya
просто тип носителя контейнера не полиморфный
Зигохистоморфный
@kana_sama я думаю тебе также стоит обратить внимание на репрезентативный функтор
кана
Какой-то странный F
Какая разница, просто рандомный F
A64m
там же асап будет для ферст ордер языка, при полнопрограммном анализе, т.е. асап для грина вполне подходит
A64m
другое дело, наколько проблемно хаскель компилировать в такой промежуточный язык
A64m
первая имплементация грина ни одной программы больше 1000 строк не собирала
A64m
да и jhc тоже успешным проектом не назовешь
Alexander
/stat@combot
Combot
combot.org/c/-1001043143583
Anonymous
Mago будет жить. Поприветствуем!
Cheese
давайте договоримся в математических и программистских статьях не писать рядом «bottom» и «(_|_)» (именно в скобках)
Андрей
Почему?
a66ath
Это жеппа
Андрей
Да вроде нет
Anonymous
⊥ ⊥ U+22A5 https://en.m.wikipedia.org/wiki/List_of_logic_symbols
Kirill
(⊥) смотрится ещё лучше чем (_|_)
Timofey
$\bot$
Cheese
со скобками попа
Cheese
и «bottom» — задница
Alexander
для тех кто сразу не понял
Alexander
ещё предлагаю сразу к этому добавить, чтобы в руских постах и статьях и объяснениях не использовать слово "жопа"
A64m
тем временем комитетчики приняли пару фич https://github.com/ghc-proposals/ghc-proposals/pull/54
A64m
и https://github.com/ghc-proposals/ghc-proposals/pull/81
Alexander
твиттер рассказал
A64m
мой оптимистичный прогноз, что будет пара заметных фич, а именно Top-level kind signatures и Type applications in patterns реалистический прогноз как раньше остается, пока диффы соотвествующие не появятся https://gist.github.com/klapaucius/8fc2fbb48606e6dd9a9a095898e3fac4
Апач
что сделать - не знаю, я просто отрубаю подсветку когда баги и пишу без нее
Вы какие то сверхчеловеки неподсвеченный код писать.
кана
ну я пишу мелкую фигню в один файл, :r в репле пишется на автомате посли любого изменения, ошибки видятся быстро
Alexander
@chshersh summoner не собирается cabal-install-ом на ghc 8.2.2 и новом срезе