Alexander
не хватит, там они частично применены
тот
Dmitrii
меньше зависимостей - круче, имеете в виду?
Нет, я имел в виду, что в Haskell нет синтаксиса для именованных аргументов. И можно было бы попатчить GHC, чтобы ввести этот синтаксис (предварительно убедив сотню людей, что именно этот синтаксис для именованных аргументов правильный). Но тот факт, что это можно реализовать средствами самого языка, означает, что язык довольно выразительный, что даже казалось бы синтаксическую фичу, которую никак нельзя иметь не улучшая компилятор специально для этой фичи, можно реализовать на самом языке. Но и да, в библиотеке примерно 0 зависимостей, так что никакого оверхеда)
eahqzsr
Нет, я имел в виду, что в Haskell нет синтаксиса для именованных аргументов. И можно было бы попатчить GHC, чтобы ввести этот синтаксис (предварительно убедив сотню людей, что именно этот синтаксис для именованных аргументов правильный). Но тот факт, что это можно реализовать средствами самого языка, означает, что язык довольно выразительный, что даже казалось бы синтаксическую фичу, которую никак нельзя иметь не улучшая компилятор специально для этой фичи, можно реализовать на самом языке. Но и да, в библиотеке примерно 0 зависимостей, так что никакого оверхеда)
А ведь ещё есть QuasiQuotes
eahqzsr
Страшно подумать что можно слелать
Dmitrii
А ведь ещё есть QuasiQuotes
Думаю, что тащить QuasiQuotes на каждый вызов функции довольно неудобно. Поэтому именно для этой задачи неудобно. Я видел решение Extensible Records на квази-квотах, и это выглядело довольно страшненько... Как по мне, квазиквотеры подходят для чего-нибудь в духе: вставить кусок HTML в код с интерполяцией и заодно провести компайл-тайм валидацию HTML (кстати, причём именно такой библиотеки нет).
Cheese
Vladimir
всем привет! Кто может посоветовать годную литературу по фп на русском языке желательно. И также материал по Haskell для начинающих?
Cheese
Dmitry
Cheese
если кто не в курсе, у нас целое сообщество
Cheese
с сайтом, чатами, форумами, твиттером, прочими ресурсами
Cheese
и даже митапами
Vladimir
Cheese
а само сообщество — это люди вокруг тебя
Cheese
у него нет единственной точки входа, мы везде
Cheese
хотя сайт ruhaskell.org — одна из точек входа
Cheese
и этот чат тоже
Святослав
кана
не хватит, там они частично применены
не понятно, про что ты говоришь, где они там частично применены
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
а да, я сначала хотел передавать сами TF, через доп тип данных можно
Viacheslav
я вот уже неделю смотрю на 3 библиотеки
Viacheslav
задача написать pull-based стрим, который ходит в сеть и преобразует как-то данные, которые потом как-то обрабатываются
Viacheslav
смотрю на pipes, streaming и conduit
Viacheslav
подскажите какую стоит использовать?
Alexander
кондуиты с большим числом либ и наверное самые простые
Alexander
но лучше streaming если двусторонних связей нету
Viacheslav
спасибо
Cheese
в Хаскеле есть средства для генерации или DSL для FSM парсеров?
eahqzsr
eahqzsr
В смысле регулярная грамматика?
Lev
нет, это техника реализации парсинга (или генерации!) грамматики
Lev
есть состояния, есть транзишны между ними, как в школе на уроке информатики. очень общий подход
eahqzsr
eahqzsr
Множество языков генерируемых конечными автоматами == множеству языков описываемыми регулярными грамматиками и называется регулярными языками
Cheese
Что такое fsm парсер?
парсер, работающий и выглядящий как конечный автомат. не знаю, возможно, мне это не нужно
eahqzsr
Тебе интересно на структуру этого КА посмотреть? Или рабочий парсер который из строки будет синтаксическое дерево строить?
Cheese
на самом деле мне нужен аналог Ragel, но с достаточно прозрачной поддержкой Haskell и других языков.
есть гипотеза, что достаточно абстрактную хаскельную библиотеку можно доработать до генератора любого языка
Cheese
если ещё выше уровнем, мне надо один раз описать грамматику, и автоматически получить парсеры для нескольких языков программирования
Cheese
как минимум, Haskell и Java
Cheese
в идеале ещё C, C++, JavaScript, Python
eahqzsr
Ну во первых у языков программирования не регулярная грамматика, а конекстно свободная обычно
eahqzsr
У тебя уровней вложенности скобок может быть сколько угодно, они в КА не влезут
Cheese
мне не надо парсить языки программирования
eahqzsr
А, пардон - не понял
Cheese
спецификация языка уже есть, она довольно простая, по-моему, регулярная
Cheese
у этого языка глубина ограничена. хотя автомат со стэком с точки зрения парсинга вроде не сильно сложнее конечного
Cheese
классификация языков очень важна, чтобы автоматы писать?
eahqzsr
Ну насколько я помню там свои правила построения для каждого класса
eahqzsr
Есть формальный алгоритм как из регулярной грамматики получить КА, а из контекстно свободной - автомат со стеком. Тебе нужен учебник по теории компиляции
Cheese
я точно знаю, что КА достаточно
Cheese
могу спеку языка показать
eahqzsr
Я правильно понимаю что ты хочешь КА использовать как промежуточное представление для генератора парсеров?
eahqzsr
Покажи конечно
eahqzsr
Правда я всю эту механику видел лет 16 назад в последний раз
Lev
а почему в, скажем, clang она не применяется?
eahqzsr
http://math.msu.su/~vvb/FormLang/FormLang.html пункт 1.2
eahqzsr
Anonymous
Lev
Она - кто?
формализмы эти. и генераторы парсеров
Cheese
я этот конечный автомат могу руками написать. мне нужен язык, чтобы написать его один раз и нагенерить дальше автоматически
eahqzsr
формализмы эти. и генераторы парсеров
Генераторы парсеров используют повсеместно. Только обычно сразу из BNF. И формализмы тоже. Некоторые библиотеки парсеров например могут только контекстно свободные грамматики парсить а некоторые и более общие классы.
Anonymous
eahqzsr
Ну вот представление first/second там кортеж
eahqzsr
Стрелки это на 80% бифунктор
Алексей ayaye :)
Алексей ayaye :)
но можно ему генератор добавить )
Антон
Cheese