@haskellru

Страница 1338 из 1551
Alexander
13.07.2018
21:30:01
https://gist.github.com/qnikst/785feaecb43b032ef21415576d85209d

через nested types без гадтов наверное не получится

правда elim там уже фиг напишешь так просто (скорее всего)

Index
13.07.2018
21:38:45
Я сделал штуковину https://hackage.haskell.org/package/unwrapped-functors-0.1.0.0/docs/Data-Functor-Unwrapped.html

Google
Index
13.07.2018
21:39:45
Она достаточно тупая, но если взять Rec из vinyl и переписать там тип элементов с f r на Unwrapped f r, то получаются даже сносные гетерогенные списки

Ну то есть могут они строго меньше, но простые юз-кейсы становятся намного приятнее, например не нужно в Identity всё заворачивать

или в Const

я вот применил Product (Const x) Identity и получил для каждого элемента a тьюпл (x, a)

в более интересных новостях, добавил поддержку опциональных параметров в https://hackage.haskell.org/package/named-0.2.0.0/docs/Named.html

kana
13.07.2018
23:06:43
https://gist.github.com/qnikst/785feaecb43b032ef21415576d85209d
классы тут по идее не нужны, хватит и просто инстансов семейств

в принципе получается это, только вместо конкретных Head/Shift получается семейство разных Head/Shift, параметризованное фантомом, которое находится в типе rope

Alexander
14.07.2018
04:35:26
не хватит, там они частично применены

Dmitry
14.07.2018
04:59:14
в более интересных новостях, добавил поддержку опциональных параметров в https://hackage.haskell.org/package/named-0.2.0.0/docs/Named.html
Хочу обратить внимание, что это реальное крутая штука. Это довольно прикольно и удивительно, как в языке с изначально только позиционными аргументами получилось добавить довольно неплохую поддержку именованных аргументов с дефолтными параметрами только средствами языка.

Dmitry
14.07.2018
06:06:51
меньше зависимостей - круче, имеете в виду?
Нет, я имел в виду, что в Haskell нет синтаксиса для именованных аргументов. И можно было бы попатчить GHC, чтобы ввести этот синтаксис (предварительно убедив сотню людей, что именно этот синтаксис для именованных аргументов правильный). Но тот факт, что это можно реализовать средствами самого языка, означает, что язык довольно выразительный, что даже казалось бы синтаксическую фичу, которую никак нельзя иметь не улучшая компилятор специально для этой фичи, можно реализовать на самом языке. Но и да, в библиотеке примерно 0 зависимостей, так что никакого оверхеда)

Google
Dmitry
14.07.2018
06:23:54
А ведь ещё есть QuasiQuotes
Думаю, что тащить QuasiQuotes на каждый вызов функции довольно неудобно. Поэтому именно для этой задачи неудобно. Я видел решение Extensible Records на квази-квотах, и это выглядело довольно страшненько... Как по мне, квазиквотеры подходят для чего-нибудь в духе: вставить кусок HTML в код с интерполяцией и заодно провести компайл-тайм валидацию HTML (кстати, причём именно такой библиотеки нет).

Vladimir
14.07.2018
08:02:41
всем привет! Кто может посоветовать годную литературу по фп на русском языке желательно. И также материал по Haskell для начинающих?

Yuriy
14.07.2018
08:18:04
если кто не в курсе, у нас целое сообщество

с сайтом, чатами, форумами, твиттером, прочими ресурсами

и даже митапами

Vladimir
14.07.2018
08:19:57
https://ruhaskell.org/links.html
Это сообщество?

Yuriy
14.07.2018
08:20:28
Это сообщество?
это страница с сайта сообщества

а само сообщество — это люди вокруг тебя

у него нет единственной точки входа, мы везде

хотя сайт ruhaskell.org — одна из точек входа

и этот чат тоже

Vladimir
14.07.2018
08:33:11
на stepic хороший курс
3 недели который идет?

Алексей Ayaye :)
14.07.2018
08:33:49
3 недели который идет?
там сейчас нет дедлайнов

The mirror
14.07.2018
08:34:08
3 недели который идет?
Там вроде только 2 курса по хаскеллу, второй - продолжение первого, ведёт Москвин

kana
14.07.2018
09:06:17
не хватит, там они частично применены
не понятно, про что ты говоришь, где они там частично применены type family CHead q (xs :: [Type]) :: Type type family CTail q (xs :: [Type]) :: [Type] data Q (xs :: [Type]) q where N :: Q xs q (:-) :: CHead q xs -> Q (CTail q xs) q -> Q xs q infixr 5 :- data Cycle type instance CHead Cycle xs = Head xs type instance CHead Cnt (x ': y) = x в твоем коде они тоже нигде не применены частично

Alexander
14.07.2018
09:10:57
а да, я сначала хотел передавать сами TF, через доп тип данных можно

Google
Vyacheslav
14.07.2018
10:31:16
я вот уже неделю смотрю на 3 библиотеки

задача написать pull-based стрим, который ходит в сеть и преобразует как-то данные, которые потом как-то обрабатываются

смотрю на pipes, streaming и conduit

подскажите какую стоит использовать?

Alexander
14.07.2018
10:33:49
кондуиты с большим числом либ и наверное самые простые

но лучше streaming если двусторонних связей нету

Vyacheslav
14.07.2018
10:47:38
спасибо

Yuriy
14.07.2018
14:37:29
в Хаскеле есть средства для генерации или DSL для FSM парсеров?

shadowjack
14.07.2018
18:59:05
В смысле регулярная грамматика?

Lev
14.07.2018
19:02:55
нет, это техника реализации парсинга (или генерации!) грамматики

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

shadowjack
14.07.2018
19:05:49
Множество языков генерируемых конечными автоматами == множеству языков описываемыми регулярными грамматиками и называется регулярными языками

Yuriy
14.07.2018
19:12:08
Что такое fsm парсер?
парсер, работающий и выглядящий как конечный автомат. не знаю, возможно, мне это не нужно

shadowjack
14.07.2018
19:14:00
Тебе интересно на структуру этого КА посмотреть? Или рабочий парсер который из строки будет синтаксическое дерево строить?

Yuriy
14.07.2018
19:15:36
на самом деле мне нужен аналог Ragel, но с достаточно прозрачной поддержкой Haskell и других языков. есть гипотеза, что достаточно абстрактную хаскельную библиотеку можно доработать до генератора любого языка

если ещё выше уровнем, мне надо один раз описать грамматику, и автоматически получить парсеры для нескольких языков программирования

как минимум, Haskell и Java

в идеале ещё C, C++, JavaScript, Python

Google
shadowjack
14.07.2018
19:19:27
Ну во первых у языков программирования не регулярная грамматика, а конекстно свободная обычно

У тебя уровней вложенности скобок может быть сколько угодно, они в КА не влезут

Yuriy
14.07.2018
19:20:32
мне не надо парсить языки программирования

shadowjack
14.07.2018
19:20:51
А, пардон - не понял

Yuriy
14.07.2018
19:21:13
спецификация языка уже есть, она довольно простая, по-моему, регулярная

shadowjack
14.07.2018
19:23:04
спецификация языка уже есть, она довольно простая, по-моему, регулярная
https://ru.m.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%B0%D1%8F_%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0

Yuriy
14.07.2018
19:23:07
у этого языка глубина ограничена. хотя автомат со стэком с точки зрения парсинга вроде не сильно сложнее конечного

классификация языков очень важна, чтобы автоматы писать?

shadowjack
14.07.2018
19:26:34
Ну насколько я помню там свои правила построения для каждого класса

Admin
ERROR: S client not available

shadowjack
14.07.2018
19:29:15
Есть формальный алгоритм как из регулярной грамматики получить КА, а из контекстно свободной - автомат со стеком. Тебе нужен учебник по теории компиляции

Yuriy
14.07.2018
19:30:42
я точно знаю, что КА достаточно

могу спеку языка показать

shadowjack
14.07.2018
19:31:14
Я правильно понимаю что ты хочешь КА использовать как промежуточное представление для генератора парсеров?

Покажи конечно

Правда я всю эту механику видел лет 16 назад в последний раз

Lev
14.07.2018
19:34:36
а почему в, скажем, clang она не применяется?

shadowjack
14.07.2018
19:35:31
http://math.msu.su/~vvb/FormLang/FormLang.html пункт 1.2

dimiii
14.07.2018
19:36:42
Google
Lev
14.07.2018
19:36:50
Она - кто?
формализмы эти. и генераторы парсеров

Yuriy
14.07.2018
19:37:05
Покажи конечно
https://github.com/gritzko/ron

shadowjack
14.07.2018
19:37:49
Почему участвуете в дискуссии тогда?
Потому что лучших ответов не прозвучало

Yuriy
14.07.2018
19:38:42
я этот конечный автомат могу руками написать. мне нужен язык, чтобы написать его один раз и нагенерить дальше автоматически

shadowjack
14.07.2018
19:44:29
формализмы эти. и генераторы парсеров
Генераторы парсеров используют повсеместно. Только обычно сразу из BNF. И формализмы тоже. Некоторые библиотеки парсеров например могут только контекстно свободные грамматики парсить а некоторые и более общие классы.

Антон
14.07.2018
19:47:54
(f &&& g) x = (f x, g x)
Ну вот, теперь человек будет думать, что стрелки — это кортежи

shadowjack
14.07.2018
19:49:17
Ну вот представление first/second там кортеж

Стрелки это на 80% бифунктор

Антон
14.07.2018
19:51:40
Как думаете, этим можно джуна убить?
Можно. Я бы не стал так сильно юзать одновременно и композиции функций, и list comprehension

Алексей Ayaye :)
14.07.2018
19:57:06
в идеале ещё C, C++, JavaScript, Python
anltr всё это умеет, кроме haskell

но можно ему генератор добавить )

Yuriy
14.07.2018
20:10:31
http://hackage.haskell.org/package/motor
выглядит как часть решения, спасибо

Алексей Ayaye :)
14.07.2018
20:11:57
как?
ну как, на Java написать



по аналогии с имеющимися

Yuriy
14.07.2018
20:17:54
ну, вариант

Dmitry
14.07.2018
22:10:01
ANTLR не подходит?

Биндинги для генерации на Haskell тоже есть

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