Alexander
не хватит, там они частично применены
Dmitrii
в более интересных новостях, добавил поддержку опциональных параметров в https://hackage.haskell.org/package/named-0.2.0.0/docs/Named.html
Хочу обратить внимание, что это реальное крутая штука. Это довольно прикольно и удивительно, как в языке с изначально только позиционными аргументами получилось добавить довольно неплохую поддержку именованных аргументов с дефолтными параметрами только средствами языка.
Dmitrii
меньше зависимостей - круче, имеете в виду?
Нет, я имел в виду, что в Haskell нет синтаксиса для именованных аргументов. И можно было бы попатчить GHC, чтобы ввести этот синтаксис (предварительно убедив сотню людей, что именно этот синтаксис для именованных аргументов правильный). Но тот факт, что это можно реализовать средствами самого языка, означает, что язык довольно выразительный, что даже казалось бы синтаксическую фичу, которую никак нельзя иметь не улучшая компилятор специально для этой фичи, можно реализовать на самом языке. Но и да, в библиотеке примерно 0 зависимостей, так что никакого оверхеда)
eahqzsr
Страшно подумать что можно слелать
Dmitrii
А ведь ещё есть QuasiQuotes
Думаю, что тащить QuasiQuotes на каждый вызов функции довольно неудобно. Поэтому именно для этой задачи неудобно. Я видел решение Extensible Records на квази-квотах, и это выглядело довольно страшненько... Как по мне, квазиквотеры подходят для чего-нибудь в духе: вставить кусок HTML в код с интерполяцией и заодно провести компайл-тайм валидацию HTML (кстати, причём именно такой библиотеки нет).
Vladimir
всем привет! Кто может посоветовать годную литературу по фп на русском языке желательно. И также материал по Haskell для начинающих?
Cheese
если кто не в курсе, у нас целое сообщество
Cheese
с сайтом, чатами, форумами, твиттером, прочими ресурсами
Cheese
и даже митапами
Vladimir
https://ruhaskell.org/links.html
Это сообщество?
Cheese
Это сообщество?
это страница с сайта сообщества
Cheese
а само сообщество — это люди вокруг тебя
Cheese
у него нет единственной точки входа, мы везде
Cheese
хотя сайт ruhaskell.org — одна из точек входа
Cheese
и этот чат тоже
Vladimir
на stepic хороший курс
3 недели который идет?
Алексей ayaye :)
3 недели который идет?
там сейчас нет дедлайнов
Igor
3 недели который идет?
Там вроде только 2 курса по хаскеллу, второй - продолжение первого, ведёт Москвин
кана
не хватит, там они частично применены
не понятно, про что ты говоришь, где они там частично применены 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
В смысле регулярная грамматика?
Lev
нет, это техника реализации парсинга (или генерации!) грамматики
Lev
есть состояния, есть транзишны между ними, как в школе на уроке информатики. очень общий подход
eahqzsr
Множество языков генерируемых конечными автоматами == множеству языков описываемыми регулярными грамматиками и называется регулярными языками
Cheese
Что такое fsm парсер?
парсер, работающий и выглядящий как конечный автомат. не знаю, возможно, мне это не нужно
eahqzsr
Тебе интересно на структуру этого КА посмотреть? Или рабочий парсер который из строки будет синтаксическое дерево строить?
Cheese
на самом деле мне нужен аналог Ragel, но с достаточно прозрачной поддержкой Haskell и других языков. есть гипотеза, что достаточно абстрактную хаскельную библиотеку можно доработать до генератора любого языка
Cheese
если ещё выше уровнем, мне надо один раз описать грамматику, и автоматически получить парсеры для нескольких языков программирования
Cheese
как минимум, Haskell и Java
Cheese
в идеале ещё C, C++, JavaScript, Python
eahqzsr
Ну во первых у языков программирования не регулярная грамматика, а конекстно свободная обычно
eahqzsr
У тебя уровней вложенности скобок может быть сколько угодно, они в КА не влезут
Cheese
мне не надо парсить языки программирования
eahqzsr
А, пардон - не понял
Cheese
спецификация языка уже есть, она довольно простая, по-моему, регулярная
eahqzsr
спецификация языка уже есть, она довольно простая, по-моему, регулярная
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
Cheese
у этого языка глубина ограничена. хотя автомат со стэком с точки зрения парсинга вроде не сильно сложнее конечного
Cheese
классификация языков очень важна, чтобы автоматы писать?
eahqzsr
Ну насколько я помню там свои правила построения для каждого класса
eahqzsr
Есть формальный алгоритм как из регулярной грамматики получить КА, а из контекстно свободной - автомат со стеком. Тебе нужен учебник по теории компиляции
Cheese
я точно знаю, что КА достаточно
Cheese
могу спеку языка показать
eahqzsr
Я правильно понимаю что ты хочешь КА использовать как промежуточное представление для генератора парсеров?
eahqzsr
Покажи конечно
eahqzsr
Правда я всю эту механику видел лет 16 назад в последний раз
Lev
а почему в, скажем, clang она не применяется?
eahqzsr
http://math.msu.su/~vvb/FormLang/FormLang.html пункт 1.2
Anonymous
Lev
Она - кто?
формализмы эти. и генераторы парсеров
Cheese
Покажи конечно
https://github.com/gritzko/ron
eahqzsr
Почему участвуете в дискуссии тогда?
Потому что лучших ответов не прозвучало
Cheese
я этот конечный автомат могу руками написать. мне нужен язык, чтобы написать его один раз и нагенерить дальше автоматически
eahqzsr
формализмы эти. и генераторы парсеров
Генераторы парсеров используют повсеместно. Только обычно сразу из BNF. И формализмы тоже. Некоторые библиотеки парсеров например могут только контекстно свободные грамматики парсить а некоторые и более общие классы.
Антон
(f &&& g) x = (f x, g x)
Ну вот, теперь человек будет думать, что стрелки — это кортежи
eahqzsr
Ну вот представление first/second там кортеж
eahqzsr
Стрелки это на 80% бифунктор
Антон
Как думаете, этим можно джуна убить?
Можно. Я бы не стал так сильно юзать одновременно и композиции функций, и list comprehension
Алексей ayaye :)
в идеале ещё C, C++, JavaScript, Python
anltr всё это умеет, кроме haskell
Алексей ayaye :)
но можно ему генератор добавить )
Антон
там unary tuple вроде подвезут
А как оно в синтаксис впихивается? tuple sections явно полезнее