
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

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

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

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

Aleksey
27.05.2018
07:56:14

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

Stepan
27.05.2018
08:18:56

Alexander
27.05.2018
08:19:14
но обычно он очень лимитированный
в общем Пиккеринг предлагает особый подвид ТН без интроспекции, но который не байткод интерпретатором, а оптимизатором выполняетсы
у оптимизатора есть подстановка, переименование из операций
splice = вычислить насколько можно, quote - отсановить вычисление
там сейчас в гхцдев рассылке обсуждают

Yuriy
27.05.2018
08:29:54
парсеры HTTP, JSON, XML уже написаны

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

Yuriy
27.05.2018
08:43:18
я написал "обычно"
правда, это тогда задача для просто парсера, а не парсера ответа API сайта
я сильно подозреваю, что нужна библиотека-клиент, а не парсер
и вот ещё один спросил и убежал