@haskellru

Страница 1322 из 1551
Alexander
03.07.2018
11:01:48
и bytestring и vector

там вообще inlineIO

Денис
03.07.2018
11:02:19
чтобы их использовать не нужно знать как работает unsafePerformIO

и пока сам не вызваешь всё ок

Google
Alexander
03.07.2018
11:02:58
ReaderT, конечно, каноничнее, но в данном случае не даёт никаких плюсов, а только проблемы

а вообще лучше так, почему нельзя использовать unsafePerformIO ?

Денис
03.07.2018
11:04:39
название как бы намекает

Vladimir
03.07.2018
11:05:45
можно, но там же внутренний голос, ему доводы нужны

Pineapple
03.07.2018
11:06:41
Ну тащемта окружение можно менять, так что совсем канонично-ортодоксально getEnv

Денис
03.07.2018
11:06:56
На мой взгляд важный довод. Если название функции говорит, что она unsafe, то код без неё лучше.

Alexander
03.07.2018
11:07:03
не катит

вообще не логичный довод, ну разве если ты знакомишься с языком

Денис
03.07.2018
11:07:43
названия это очень важно

Alexander
03.07.2018
11:08:08
Ну тащемта окружение можно менять, так что совсем канонично-ортодоксально getEnv
getEnv каждый раз наверное лучше, но таким образом действительно лучше не использовать, и.к. это будет глобальное состояние

поскольку тогда одна часть программы может неявно менять поведение другой

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

не надо так

Google
Pineapple
03.07.2018
11:09:29
unsafe = не пользуйся, не зная зачем и как работает

Vladimir
03.07.2018
11:09:32
если переменная инициализируется только единожды, при первом обращении,то unsafe предочтительнее, в других случаях надо думать

Pineapple
03.07.2018
11:10:03
Я б еще NOINLINE добавил к переменной

Alexander
03.07.2018
11:10:10
да

это обязательно

Vladimir
03.07.2018
11:10:35
вот это отличное замечание

Leonid
03.07.2018
11:11:45
там вообще inlineIO
accursedUnutterablePerformIO

Alexander
03.07.2018
11:12:58
ну там алиас

вот эту штуку лучше точно использовать только если все понимаешь

Leonid
03.07.2018
11:13:37
@astynax не знаю что ты меня пугал с формочками, я на Люсе с type Form e a = HtmlT (Reader FormEnv) a собрал тут на коленке. вроде хватает :)

Alexander
03.07.2018
11:13:44
unsafe у unsafePerformIO т.к. через него можно сделать unsafeCoerce

неожиданно и засегфолтитт программу

с safe функциями этого не должно быть возможнр

т.к. система типов должна быть sound

Денис
03.07.2018
11:14:59
и.е. вы видите название и предлагаете на основе только этого, а не какого либо другого знания советы другим людям?
Кое-что я про эту функцию всё же знаю. Не достаточно для того, чтобы использовать, но достаточно, чтобы не использовать.

Alexander
03.07.2018
11:15:10
и что же вы знаете?

Денис
03.07.2018
11:15:49
что она плохая

и что почти всегда можно обойтись без неё

Alexander
03.07.2018
11:16:14
(я очень не люблю когда люди говорят "это плохо, потому что это плохо", поэтому просто так не отстану)

идеология в инженерных науках неприемлима

Google
Alexander
03.07.2018
11:17:02
чем она плохая?

Денис
03.07.2018
11:17:18
вообще-то в программировании идеология это всё

Alexander
03.07.2018
11:17:19
какие трейдофы мы получим если обойдёмся без неё

Денис
03.07.2018
11:17:36
вообще-то нет
вот и поговорили

Alexander
03.07.2018
11:17:41
можно конкретно в данном случае

Leonid
03.07.2018
11:17:42
меня вчера в расточате уверяли что ансейф примитивы положено только в стд использовать, потому что там боги а все остальные тупые

Leonid
03.07.2018
11:19:08
это конечно в blah

Alexander
03.07.2018
11:20:35
в общем использование unsafePerformIO для создания топ-левел констант инициализация которых в IO это один из немногих валидных юзкейсов

естественно с uninline

noinline

(тупой Т9)

но константа действительно должна быть константой

это хуже reader тем, что нету функции local

так же тем что по типу такого поведения не видно

из плюсов, что композить такие функции проще

Google
Alexander
03.07.2018
11:22:33
учитывая, что это используется для отладки - не платить трейдоф за ReaderT просто так - вполне нормально

Leonid
03.07.2018
11:24:37
господи

Денис
03.07.2018
11:24:54
вы на хаскеле пишете, хеллоу

Yuriy
03.07.2018
11:26:00
надо различать преждевременную оптимизацию и правильное проектирование

Денис
03.07.2018
11:26:32
надо различать преждевременную оптимизацию и правильное проектирование
Использование ReaderT на сколько мне известно стандартная практика

Leonid
03.07.2018
11:26:46
вот я уверен что фраза про преждевременную оптимизацию вырвана из контекста. А привела она ко всему этому горькому катаклизму который я тут наблюдаю... И Владимир Николаевич тоже

Денис
03.07.2018
11:28:29
соглашусь

Admin
ERROR: S client not available

Alexander
03.07.2018
11:31:05
делать ReaderT на любую константу (или runtime константу конечно можно)

Leonid
03.07.2018
11:31:42
Может и вырвана, но ботлнек это (почти)всегда ио, а не вот это вот.
только если IO это ботлнек в ТВОЁМ приложении

Денис
03.07.2018
11:33:14
но это же почти всегда

Leonid
03.07.2018
11:36:58
Почти всегда в каких задачах то? В компиляторе? Или в рейтрейсере? Или в игрушках (разве что IO с gpu) ?

Денис
03.07.2018
11:38:18
во многих

Alexander
03.07.2018
11:44:07
тут-то ботлнек при чем?

ReaderT Conf имеет смысл если зависимость от Conf это важная часть приложения

кстати есть веселая либа hflags

там все радостные практики связаны, TH, сборка инстансов в Main, unsafePerformIO

Google
Pineapple
03.07.2018
11:51:41
unsafe у unsafePerformIO т.к. через него можно сделать unsafeCoerce
Не только. IO будет выполняться неопределённое число раз. Можно нарваться на случае, когда мутабельный буфер будет шарится, когда не должен и не будет шарится, когда должен

Index
03.07.2018
11:54:22
идеология не только приемлима, она еще и нужна

Alexander
03.07.2018
11:54:52
не нужна, нужна аргументация нормальная и доводы

Денис
03.07.2018
11:55:11
Если нет идеологии, то получается c++

Index
03.07.2018
11:55:40
Без нее можно скатиться в локальные максимумы слишком легко. Если адекватно взвестить все за и против, можно прийти к решению, которое в данном контексте наилучшее. Идеология может (а хорошая - должна) привести к качественным прорывам

Pineapple
03.07.2018
11:55:41
А если есть — эльм

Index
03.07.2018
11:56:18
Например, можно было использовать unsafeCoerce потому что так быстрее и "I know what I'm doing", а можно было придумать Coercible

Ну и собственно вариант с unsafeCoerce и привел к тому, что до ролей и Coercible у нас GND был subtly broken

Или еще пример. Если руководствоваться только практикой и юзкейсами, можно взять и придумать stack, а потом страдать с его снэпшотами. А можно до последнего добиваться нормального солвера и придумать cabal new-build с nix-style storage

Leonid
03.07.2018
12:00:15
ЧТД

Практики можно тут спрашивать, если что. Мы хоть посремся

Pineapple
03.07.2018
12:00:46
Мне кажется, что @qnikst и @int_index понимают под идеологией разные вещи

Anatolii
03.07.2018
12:05:32
а вы при разработке используете репл?

Index
03.07.2018
12:05:47
немножко

Alexander
03.07.2018
12:06:25
немного, т.к. полноценно тулинг не позволяет

Anatolii
03.07.2018
12:06:43
этот вопрос у меня возник после прочтения статьи тонского

Alexander
03.07.2018
12:07:27
я просто для запуска м проверки простых вещей и быстрого ребилда использую

Anatolii
03.07.2018
12:07:40
ну я тоже для проверки простых вещей

Alexander
03.07.2018
12:07:43
хотел бы уметь копировать определения в файл и обратно

Anatolii
03.07.2018
12:08:22
я когда надо что-то посложнее сделать - делаю модуль отдельный и его загружаю

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