Alexander
Можете удивлятся https://github.com/slamdata/purescript-aff/blob/master/src/Control/Monad/Aff.js
Ох, я туда ни разу не заглядывал, а там веселенький код.
Alexander
Чтобы typelevel DSLи писать, - это надо, чтобы у твоего работодателя были стальные, ну или ты сам им был
Зигохистоморфный
Можете удивлятся https://github.com/slamdata/purescript-aff/blob/master/src/Control/Monad/Aff.js
ну а как еще делать всякие микротаски? только всякие setTimeout, setImmediate и тд
Dmitry
Александр сервант же.
Alexander
Александр сервант же.
Ну это же тулинг, а не предметная область какого-то бизнеса
Зигохистоморфный
или хайпер https://github.com/owickstrom/hyper
Alexander
Нервы
Oleg
Буду знать, что у моего стальные
Alexander
Вот и рассказали бы свой опыт, поделились знаниями. Как писать, что использовать
Dmitry
ладно, в этом вашем фрии. как писать интерпретаторы без явной рекурсии?
Leonid 🦇
Ты можешь писать на чем хочешь, если ты сам себе работодатель.
Alexander
Без явной - no remorse в исполнении PureScript. Там фолдишь структуру.
Alexander
В хаскельной либе, впрочем, тоже foldFree есть
Зигохистоморфный
ладно, в этом вашем фрии. как писать интерпретаторы без явной рекурсии?
а обычно как без явной писать? я только рекурсивные схемы знаю
Alexander
Что вообще такое - неявная рекурсия? Скрытая за комбинаторами вроде fold?
Dmitry
да
Alexander
Ну вообще можно CPS
Alexander
Хотя, наверное, это тоже "явная". Или нет?
Зигохистоморфный
ладно, в этом вашем фрии. как писать интерпретаторы без явной рекурсии?
ну вот я скрестил фри + рекурсивные схемы и никакой рекурсии явной нет brainFuckProgram :: BrainFuck () -> String brainFuckProgram code = cata go code where go (CMTF.Pure ()) = "" go (CMTF.Free t) = case t of (Inc rest) -> '+' : rest (Dec rest) -> '-' : rest (MoveL rest) -> '<' : rest (MoveR rest) -> '>' : rest (Input rest) -> ',' : rest (Output rest) -> '.' : rest (Loop body rest) -> "[" ++ brainFuckProgram body ++ "]" ++ rest
Зигохистоморфный
вообще я считаю рекурсивные схемы более мощнее чем фри монады
Dmitry
Dmitry
гугл умный
Dmitry
в отличие от.
Зигохистоморфный
мне кажется или brainFuckProgram явно вызывает себя от body?
в одном месте да, там я не прошарил как вырулить
Alexander
Так ФП мейнстрим или нет?
Alexander
(Наброс, а то тихо что-то)
Dmitry
такой же как и линукс
Dmitry
на десктопе
Alexander
У меня Линукс на десктопе. И я ФПшник. Мне сложно судить. Хотелось бы чужие мнения послушать
Dmitry
спроси в интернете, какой процент аудитории пользуется интернетом
Alexander
Ну ладно. Мы сегодня уже похоливарили.
доня.
Так ФП мейнстрим или нет?
очень медленно перетекает в мейнстрим
A64m
уже вытекает обратно из мейнстрима
доня.
разве?
Dmitry
все умрут, останется только go
Dmitry
который еще несколько упростят.
Зигохистоморфный
который еще несколько упростят.
и что в нем будет? только арифметические операции?)
Mikhailъ⃞
и что в нем будет? только арифметические операции?)
без деления, оно долгое и вообще не всегда порождает нормальные ответы
Alexander
снова вечеринка нубских вопросов. String к ByteString можно скастить как то?
Alexander
хочет [Word8] :(
Зигохистоморфный
а BS откуда?
Алексей
А вам в какой кодировке? BS, это просто куча байтов
Alexander
логично
Alexander
Data.ByteString.Lazy.UTF8 я так понимаю, encodeUTF8?
Зигохистоморфный
хочет [Word8] :(
https://www.stackage.org/haddock/lts-10.5/bytestring-0.10.8.2/Data-ByteString-Char8.html#v:pack
Алексей
Плохое советуешь
Зигохистоморфный
ну или https://www.stackage.org/haddock/lts-10.5/utf8-string-1.0.1.1/Data-ByteString-Lazy-UTF8.html#v:fromString
Dmitry
по поводу кастов
Dmitry
то, что я сейчас посоветую это очень плохо. но мы без этого уже не можем
Dmitry
interpolatedstring-perl6
Зигохистоморфный
interpolatedstring-perl6
а зачем так?
Dmitry
ну потому что помимо прочего, можно еще и скастовать строки по ходу.
Dmitry
что бы без pack/unpack/toStrict
Dmitry
ну, бывает надо быстро сделать, а это всё равно в проекте всегда есть
Зигохистоморфный
я как-то находил такой пакет https://www.stackage.org/lts-10.5/package/text-show-3.7.1
Alexander
@A64m_qb0 какой бы -n делать, при -A32m?
A64m
да я не думаю, что от его подбора какой-то толк будет. 2 или 4. Да в 8.2 при таком А он и так нормальным должен быть
Alexander
m ?
A64m
ну да, 2m или 4m
Alexander
Во многих языках такие конструкции даже форсятся вместо конкатенации
Aleksei (astynax)
interpolatedstring-perl6
Зачем это использовать, если уже давно есть shakespeare, который и удобнее (sbt - отличная штука) и живой?
Kirill
Simple build tool??? :)
Nikolai
Cheese
https://www.stackage.org/haddock/lts-10.5/shakespeare-2.0.15/Text-Shakespeare-Text.html#v:sbt же
Alexander
Шекспир не очень приятный шаблонизатор, особенно если нужна строка с хитрой логикой
Alexander
там для логики язык несколько странный был
Kirill
@qnikst а для distributed-haskell не смотрели https://arxiv.org/abs/1802.02652 ?
Kirill
или он по сути на суппорте и особых планов развития нет?
Kirill
правда на "посмотреть" всего 3 дня было :)
Alexander
по сути на саппорте
Alexander
пасиб за статью посмотрю мне интересно
Kirill
поделись потом мнением, например
Alexander
обязательно