@haskellru

Страница 271 из 1551
Dmitry
24.05.2017
12:22:31
ну по приведенной фотке не вполне очевидно что где не сходится, но да - добавить конверсию

Misha
24.05.2017
12:22:52
Ну то есть это норм воткнуть им туда конверсию?
в общем случае нет, если ByteString не содержит валидный utf-8

но вообще да

"на практике"

Google
Aragaer
24.05.2017
13:07:04
конструкция-то простецкая, но куда и зачем - так и не осилил

Dmitry
24.05.2017
13:07:38
что бы типизировать эффекты же.

Aragaer
24.05.2017
13:08:11
вот ... не, я не понял, что такое "типизировать" и какие такие "эффекты". Еще пока

мне по-простому - функции, байтики, маллок

Dmitry
24.05.2017
13:08:55
ну вот тем, кто делал хаскель, захотелось чистый язык. классификация языков есть, например, у Аппеля и она вообще возникает каждый раз, когда дело доходит до разработки языков

и если у тебя readIntFromFile :: FIlePath -> IO Int

то с этим Int , который внутри IO надо как-то жить

Мерлин
24.05.2017
13:09:58
конструкция-то простецкая, но куда и зачем - так и не осилил
Не надо осиливать монады Просто пиши грёбаный код Programming, Motherfucker Do you speak it?

Dmitry
24.05.2017
13:10:18
у Аппеля, например, тоже самое делается без монад, но в итоге получаются всё равно практически монады

Aragaer
24.05.2017
13:11:38
вобщем в том (единственном) случае, когда я попытался что-то написать на хаскелле, я дошел до того, что мне понадобились монады, за один вечер не сообразил как их прицепить, а потом (уже несколько лет) к тому единственному случаю не возвращался

Мерлин
24.05.2017
13:12:27
Не надо осиливать монады Просто пиши грёбаный код Programming, Motherfucker Do you speak it?
Как ответил Дэвид Мермин на вопрос "как же всё таки работает квантовая механика?": "Заткнись и считай"

Dmitry
24.05.2017
13:14:44
тащем-та, пописав в CPS хотя бы на Си, непонятно, какие проблемы с монадами самими по себе

Google
Dmitry
24.05.2017
13:14:51
монада это ... тадам! всего лишь тайпкласс.

Misha
24.05.2017
13:15:26
ну вот да

Dmitry
24.05.2017
13:15:37
с интерфейсами ж в Java нет проблем, а тут-то что вы к ним прицепились?

Evgeniy
24.05.2017
13:16:37
мне по-простому - функции, байтики, маллок
проблема с этим всем в том, что много всякой теории и кучи разных описаний с разных сторон и наиболее простой способ разобраться это просто не вникать особо а попробовать использовать

Dmitry
24.05.2017
13:16:53
зато я помню, как мне надо было в Си сказать компилятору, что у меня вычисление без побочных эффектов и заставить его в компайл-тайме свитч вычислить

шо вы думаете - так и не получилось

Misha
24.05.2017
13:17:08
далеко не самая сложная абстракция, но почему-то у людей какое-то благоговение при слове монада

Dmitry
24.05.2017
13:17:15
потому что откуда знать в тупом си, что функция без побочных эффектов

ну вот да. с одной строны, взможно из-за названия - отдает то ли Гегелем, то ли Хайдеггером

вот люди и боятся. в F# их вроде переименовали во что-то. но не помогло

? animufag ?
24.05.2017
13:21:42
проблема с этим всем в том, что много всякой теории и кучи разных описаний с разных сторон и наиболее простой способ разобраться это просто не вникать особо а попробовать использовать
ну беда в том что на этом уровне и остаёшься и практика не двигает теорию. хотя этого достаточно.вроде ещё не слышал чтобы теоркат кому-нибудь помогал с работой на хаскеле

алсо норм было бы если бы io поделили на работу с сетью / работу с бд и тд. была бы монада ui где нельзя делать треды, ходить в бд и тд. наверное это не просто

Aragaer
24.05.2017
13:23:47
потому что откуда знать в тупом си, что функция без побочных эффектов
в гцц вроде есть в экстеншнах атрибуты типа pure и const. Но реально достаточно было чтоб заинлайнил и все.

Evgeniy
24.05.2017
13:23:57
Dmitry
24.05.2017
13:23:57
1) не всегда работает

2) это был не gcc

ну и все эти pure совершенно точно работают не всегда, т.е там какие-то эвристики и гарантировать ничего нельзя.

Евгений
24.05.2017
13:37:07
проблема с этим всем в том, что много всякой теории и кучи разных описаний с разных сторон и наиболее простой способ разобраться это просто не вникать особо а попробовать использовать
Эта "теория" просто идеалистический хайп. Переформулируем очевидые высказывания одним миллионом способов. Вся суть современной higher mathematics. Просто гранды дают не за красивые результаты, а на что-то шокирующее ум обывателя. Вот и получается аналог постмодернистского искусства аля "насрал на малевича" в науке

Андрей
24.05.2017
13:43:53
>дошел до того, что мне понадобились монады монады имхо не могут понадобиться. Ну, кроме IO, но ее можно воспринимать как паттерн и не вдаваться в детали. А все остальное можно сделать и без монад. Точно так же, как на плюсах можно писать без классов а на Си без функций.

Dmitry
24.05.2017
13:45:08
это надо большую силу воли иметь. и долго это не продлится

Google
Андрей
24.05.2017
13:46:21
ну я про вообще принципиальную возможность, что это не является неким необходимым и обязательным, а в конце концов приходят к этим абстракциям и используют их для облегчения жизни.

Dmitry
24.05.2017
13:47:50
ну, как известно для того, что бы делать вообще всё, достаточно одной единственной инструкции, например SUBLEQ

всё остальное в любом языке - просто синтаксический сахар.

Андрей
24.05.2017
13:48:43
нет, ну до дна опускаться не будем - иначе лямбда абстракция с аппликацией нашевсе

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

? animufag ?
24.05.2017
14:03:37
это надо большую силу воли иметь. и долго это не продлится
да ну? ну если не брать io который просто в do пишешь и всё ок. бывает иногда, конечно, используешь монадные функции для maybe или списка тк они уместны, но это не часто происходит. Примерно как list comprehension. Когда на парсеке пишешь обычно функторы и аппликативные функторы нужны. ну и alternative monoid. до монад редко доходит

Евгений
24.05.2017
14:19:45
алсо норм было бы если бы io поделили на работу с сетью / работу с бд и тд. была бы монада ui где нельзя делать треды, ходить в бд и тд. наверное это не просто
По-моему суть IO как раз в том, что он всеобъемлющ. Формально это же State над RealWorld. Ничего не мешает тебе скрыть IO внутри твоей UI, но ограничить его интерфейсом общения с X11, например

Misha
24.05.2017
14:25:10
Не совсем так. Невозможно иметь только один вид подобного эффекта, возможность сделать тред означает, что можно эмулировать состояние через общение с тредом, имея сеть, можно открывать какие угодно сокеты и эмулировать что угодно вообще и тд

а, ну я тоже самое и сказал примерно

Евгений
24.05.2017
14:29:22
Вообще интересно, но ведь на уровне ОС можно построить иерархию побочных эффектов нормальную, нет?

Quet
24.05.2017
14:31:38
смотря что считать "нормальной" иерархией

Arseniy
24.05.2017
14:33:08
Смотря, что считать ОС :D

? animufag ?
24.05.2017
14:36:29
В смысле когда делаешь свою ОС? думаю люди не особо двигаются в этом направлении. ну разве что на мобилках приложения просят разные пермишоны. но это скорее уровень предоставляемого сдк, а не ос

Евгений
24.05.2017
14:37:45
Ну люди и в направлении использования хаскеля не особо двигаются

? animufag ?
24.05.2017
14:41:05
ну я про то что скорей всего такой идеи ни у кого толком не было и пейперов про это не пишут. хаскелем то пользуются

Мерлин
24.05.2017
14:42:05
[last news] The Haskell Cast Episode 13 – John Wiegley on Categories and Compilers

Евгений
24.05.2017
14:43:07
ну я про то что скорей всего такой идеи ни у кого толком не было и пейперов про это не пишут. хаскелем то пользуются
Ну в масштабах человечества, один Элемир не сильно меньше чем все хаскелисты

Misha
24.05.2017
15:57:07
а кто знает чего оно возмущается? https://gist.github.com/lolepezy/30820595afd9217083c5ca629e350b55

Couldn't match type ‘ix1’ with ‘ix’ ‘ix1’ is a rigid type variable bound by the type signature for: genTList :: forall ix1. Proxy (ix : ixs) -> g ix1 -> TList (ix : ixs) g

Google
Misha
24.05.2017
15:58:34
то есть ему типа надо что-то знать о ix, чтобы удостовериться, что его можно подставить в g а качестве параметра

короче, проблему я понял, нужно как-то указать, что ix - это тип из списка ixs, но как ее решить пока не пойму

Alexander
24.05.2017
16:34:47
могу вечером посмотреть

Dmitry
25.05.2017
00:09:56
Я не настоящий сварщик, но что-то мне подсказывает, что надо Functional Dependencies использовать

Evgeniy
25.05.2017
05:31:51
подскажите по тулингу (в emacs или в atom), есть ли где такой функционал?: - выделяем выражение и получаем автодополнение функций оперирующих с его типом и доступных в текущем скоупе (либо показывает от куда их можно импортнуть) - переименовать тип во всем проекте разом -- сходу просто не нашел, хотя и не сильно искал

Vladimir
25.05.2017
05:57:15
не видел нигде

Admin
ERROR: S client not available

Vladimir
25.05.2017
05:57:16
((

юзал с хаскелем и emacs, и atom

Evgeniy
25.05.2017
06:09:10
не видел нигде
Жаль, после скалы тяжко без такого. Хотя вроде бы вполне реализуемые фичи.

? animufag ?
25.05.2017
06:13:39
Жаль, после скалы тяжко без такого. Хотя вроде бы вполне реализуемые фичи.
https://wiki.haskell.org/GHC/Typed_holes Хотя ни разу не пользовался, может оно не юзабельно

Evgeniy
25.05.2017
06:40:08
https://wiki.haskell.org/GHC/Typed_holes Хотя ни разу не пользовался, может оно не юзабельно
да для некоторых случаев выглядит подходящим, а для простых видимо все hoogle юзают?

Alexander
25.05.2017
06:53:58
ну в виме даже плагины были и имакса

для рефакторинга HaRe было, но оно неживое было

пытались воскресить

Alexey
25.05.2017
08:43:37
Как в хаскеллёвом проде поступают с отладочным логирование, всё через IO?

Google
Alexander
25.05.2017
08:55:21
Debug.Trace

он правда unsafePerformIO . putStrLn

Alexey
25.05.2017
08:58:24
И такой unsafePerfomIO не может породить кучу непонятных проблем в дальнейшем?

Alexander
25.05.2017
08:59:26
с чего бы?

ну и отладочная печать это же про временные штуки, которые не коммитятся?

Boris
25.05.2017
09:04:49
Просто иногда он не будет принтить, если функция уже посчитана

Или не в то время

Alexey
25.05.2017
09:09:56
Ладно, логировать зачастую хочется с таймером, а тут опять без IO не обойтись

Или опять же логи хочется писать в файлы

Arseniy
25.05.2017
09:13:35
Попробуйте нашу библиотечку https://github.com/serokell/log-warper

Dmitry
25.05.2017
09:14:48
А примеры использования есть?

А аналог printf? Т.е. С переменным числом аргументов

Alexey
25.05.2017
09:21:36
А часто ли используют подход , что собираешь логи через writer а потом разовое пишешь большой кусок в IO?

Quet
25.05.2017
09:22:38
а зачем?

Arseniy
25.05.2017
09:22:48
Ну если приложение умрет, то не запишет ничего :)

Дмитрий
25.05.2017
09:25:52
У меня батчинг используется в модуле, который струячит по паре мегабайт логов в секунду, просто для того, чтобы все не померло, занимаясь выводом в консоль в реалтайме

Alexey
25.05.2017
09:27:26
Ну в случае к примеру у тебя есть массивный чистый пайплайн по обсчету данных и ты хочешь посмотреть потом промежуточные результаты. Ну и промежуточные результаты не важны если все упало

Dmitry
25.05.2017
09:48:34
@jagajaga Посмотрил примеры, прикольно! Сделайте printf-like вывод! logDebug "Температура %f , а критическая %f" 10.50 100.500

Artyom
25.05.2017
09:50:12
а мы formatting всюду используем и поэтому нам printf-like вывод не нужен :troll:

(а ещё перейдём на fmt, когда у меня руки дойдут)

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