@haskellru

Страница 1226 из 1551
Anatolii
26.05.2018
16:13:00
import qualified Data.Text as T import qualified Data.Text.IO as TIO f = TIO.writeFile "coordstext" $ T.pack $ show $ ["ыы","пп"]

A64m
26.05.2018
16:15:00
ну так show же

как иначе-то

Anatolii
26.05.2018
16:18:15
так, погоди

Google
Anatolii
26.05.2018
16:18:25
это я сильнь сократил пример

ага, нет, не сократил, это я просто у себя претипринтером пользовался

и он по сути тоже самое мне сделал

A64m
26.05.2018
16:21:44
ну претти-принтер видимо использует show или просто сделано так же как там из тех же соображений

Anatolii
26.05.2018
16:21:58
да, он Show юзает

@A64m_qb0 я правильно понимаю что я могу после show запаковать в Bytestring и потом сделать decodeutf8 ?

в Text уже

A64m
26.05.2018
16:44:10
нет

Anatolii
26.05.2018
16:53:12
я что-то запутался - мы когда в байтстринг перевели - то получили же просто массив байт

почему из него нельзя восстановить utf8 ?

A64m
26.05.2018
17:02:16
можно, конечно. но зачем?

Anatolii
26.05.2018
17:05:03
ну мне хотелось бы вывод претипринтера в файл вывести:)

A64m
26.05.2018
17:07:44
так результат show это аски просто, его сколько так не кодируй все одно и то же останется

Google
Yuriy
26.05.2018
18:10:40
тут надо выбирать, мы хотим Юникод или отладочную печать

если отладочную печать, то смириться с Аски

если Юникод, то выводить в Doc или yaml

IC
26.05.2018
18:31:01
а не будет ли в мск скоро хаскельных конф?

Yuriy
26.05.2018
19:11:41
насколько мне известно, вероятность ненулевая, но очень низкая. если есть темы докладов, присылай мне

IC
26.05.2018
19:14:42
странно.. я вспомнил, как это чуть ли уже не done deal было... где-то зимой

Yuriy
26.05.2018
19:28:04
Πάντα ῥεῖ

ты прав, зимой оценка вероятности была выше

Alexander
26.05.2018
19:33:13
тут скоро зурихак

что сильно понижает вероятность того что люди ещё и в мск соберутся

Anatolii
26.05.2018
20:09:55
я в других языках видел асертеры для тестов которые показывали дифф по типу гита - тоесть только ту часть структур которые разошлись, hunit мне просто печатает полностью expected и actual

и что-то я не могу такого нагуглить

может подскажет кто?

Yuriy
26.05.2018
20:16:20
только в hedgehog видел подобное

? animufag ?
26.05.2018
20:23:26
Hspec

Anatolii
26.05.2018
21:23:43
hedgehog мне сейчас не оч подходит

буду hspec смотреть

IC
26.05.2018
21:24:23
Anatolii
26.05.2018
21:41:59
я насколько помню - там property-based тестирование?

IC
26.05.2018
21:43:20
там всё есть. есть и простые ассерты

Google
IC
26.05.2018
21:44:41
пишешь кейс вручную, а потом заворачиваешь в forAll генератор значений и получаешь проперти

я заворачивал в обвязку tasty и мне понравилось

Anatolii
26.05.2018
21:50:43
Хм, надо будет глянуть, а у тебя нет нигде примеров кода?

anton
26.05.2018
22:16:24
широко известная группа в узких кругах 65daysofstatic пишет музыку на хаскеле https://www.youtube.com/watch?v=_OAKUlRlNF0

библиотека Tidal

https://github.com/tidalcycles/Tidal

IC
26.05.2018
22:25:43
Хм, надо будет глянуть, а у тебя нет нигде примеров кода?
-- обвязка tasty для интеграции в `TestTree` Hedgehog.property $ do -- assert foo === "foo" -- property test <- forAll $ Gen.element [0..100] test === 42

Anatolii
26.05.2018
22:37:46
IC
26.05.2018
22:38:25
там в принципе отчёт о завале теста выглядит шикарно

дифы, логи, промежуточные значения... единственное не хватает запуска IO с перехватом stdin/stderr

делаешь Debug.Trace.traceM и в выводе куча-мала

особенно если параллельно гоняешь

Aleksey
27.05.2018
06:35:29
Накал про установку хаскельтулзов: https://github.com/ruHaskell/ruhaskell/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B2%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8-%D0%BD%D0%B0-Haskell-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-stack

Stepan
27.05.2018
07:40:52
Если хочется compile-time, то придётся TH/QQ использовать

вот, кстати, было бы здорово иметь что-то для статического вычисления. прагму, например

Это не совсем задача компилятора. Любые такие вычисления можно проделать за рамками компиляции.

В примере выше статические константы. Их иметь вычисленными на этапе компиляции - удобно и логично

особенно если они частичные

Это сахар. Понятно что это удобнее чем считать самому, но все же это сахар. Потому что для вычислений вам нужно выполнить полный пол тюнингу код. А компиляция создана немножко для другого

это оптимизация, но когда ещё применять оптимизации, кроме как в компиляторе?

Google
Stepan
27.05.2018
07:40:55
В хаскеле компиляция создана для всего, что можно туда запихнуть - кодогенерацию, IO, встраивание ресурсов в бинарник. Туда же относятся вычисления на типах. Вычисление констант ничем не отличается от вышеперечисленного.

Нет смотри. Вычисления на типах, биением и все что ты описал это не вычисления на хаскель. И это важно. А помнил, давай в общий чат, я там отвечу

Aleksey
27.05.2018
07:41:49
$(embedFile "foo") - вполне себе вычисление

Stepan
27.05.2018
07:41:57
И так, всё выше перечисленное это не хаскель. Тоесть тебе не нужно компилировать программу на хаскель чтобы поработать с типами библиотеками, помнить оптимизации и ТД.

Aleksey
27.05.2018
07:41:59
На этапе компиляции

Если "не хаскель", то что?

Это препроцессор в C++ - не C++. А TH, QQ - это хаскель

Просто это не одна программа, а несколько. Часть программ выполняется при компиляции, а часть - в рантайме

И всё это Хаскель

Yuriy
27.05.2018
07:44:52
$(embedFile "foo") - вполне себе вычисление
собственно, я начал с того, что помечтал о синтаксическом сахаре (а лучше отдельной фиче) для $(lift _expr)

Stepan
27.05.2018
07:44:56
Но если тебе нужно для компиляции программы А на языке Х выполнить программу В на языке Х используя определения из программы А то это рекурсия. И чтобы это решим тебе нужно компилировать программу А дважды. Первый раз без оптимизаций статических вычислений, потом провести все статические вычисления, потом написать новую программу А' в которой все статические вычисления заменятся константами

Это тянет на серьезный вклад в развитие компилятора Haskell

А когда все это появится в компиляторе то ты захочешь чтобы не только именованные константы предвычислчлись, но и все вычисоения, для которых аргументы известны на этапе компиляции там и были посчитаны. Тоесть это будут анонимные статические константы. Типа тех же fib 32

kana
27.05.2018
07:52:47
ну и такое практикуют

Stepan
27.05.2018
07:57:56
> используя определения из программы Это не позволяется как раз. Но само по себе многофазное компилирование - есть и используется.
Я о том и говорю. Использовать определения из самой программы на этапе компиляции это сложная алгоритммическая задача

Это возможно но это не просто.

Aleksey
27.05.2018
07:59:18
Пристойное компилирование хаскеля - сложная алгоритмическая задача :) И её решают. Хоть и сложная. Но решают.

Но считать, что вынос чего-то на этап компиляции, это фу-фу и "не компилятора это дело" - лишать себя кучи возможностей.

При этом конечно дже никто Фибоначчи числа не считает в compile time (хоть на хаскеле это и сильно проще, чем на многих других языках).

Google
Aleksey
27.05.2018
08:04:14
Не считают Фибоначчи ещё и потому, что compile time programming на Хаскеле не то чтобы очень удобный. Поэтому и применяется тогда, когда выигрыш большой.

Stepan
27.05.2018
08:08:26
Ну вот и я о том же)

Хотя сделать это было бы классно

Rusix696
27.05.2018
08:10:25
Всем добрый день, кто нибудь делал когда нибудь парсеры для ответа api сайта? Или может кто помочь советом:)

Alexander
27.05.2018
08:16:03
вот, кстати, было бы здорово иметь что-то для статического вычисления. прагму, например
Пиккеринг предлагает подобное сейчас с пруф концептом CC @cblp_su , типа TH но эвалиться оптимизатором будет

Alexander
27.05.2018
08:19:14
но обычно он очень лимитированный

в общем Пиккеринг предлагает особый подвид ТН без интроспекции, но который не байткод интерпретатором, а оптимизатором выполняетсы

у оптимизатора есть подстановка, переименование из операций

splice = вычислить насколько можно, quote - отсановить вычисление

там сейчас в гхцдев рассылке обсуждают

Yuriy
27.05.2018
08:29:54
Всем добрый день, кто нибудь делал когда нибудь парсеры для ответа api сайта? Или может кто помочь советом:)
для API обычно не нужно писать парсер, а просто взять готовый и написать библиотечку

парсеры HTTP, JSON, XML уже написаны

Alexander
27.05.2018
08:36:58
ну может там binary blob в ответе

ктож знает

Yuriy
27.05.2018
08:43:18
я написал "обычно"

правда, это тогда задача для просто парсера, а не парсера ответа API сайта

я сильно подозреваю, что нужна библиотека-клиент, а не парсер

и вот ещё один спросил и убежал

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