@haskellru

Страница 1433 из 1551
Oleg
02.09.2018
11:44:41
Cpython (+ разрешение циклов)
У cpython не только рефкаунт

Pineapple
02.09.2018
11:46:53
Но рефкаунт есть.

Terminator
02.09.2018
12:55:55
@seqai будет жить. Поприветствуем!

Google
Artem
02.09.2018
13:31:58
Всем привет. У меня есть возможность в Haskell сделать литеральный тип вроде такого: ```type NaturalNum = 1 | 2 | 3```Или как поступать в том случае, если хочешь ограничить аргумент на уровне типа? P.S. Хотелось бы сделать подмножество определенного типа

kana
02.09.2018
13:36:53
1) One | Two | Three 2) пруф-типы module OneTwoThree (make, get) where newtype OneTwoThree = OneTwoThree { get :: Int } make :: Int -> Maybe OneTwoThree make x | x elem [1, 2, 3] = Just $ OneTwoThree x | otherwise = Nothing module Main where import qualifed OneTwoThree import OneTwoThree (OneTwoThree) f :: OneTwoThree -> String f (OneTwoThree.get -> 1) = "1" f (OneTwoThree.get -> 2) = "2" f (OneTwoThree.get -> 3) = "3" main = do input <- read <$> getLine case OneTwoThree.make input of Just x -> putStrLn (f x) Nothing -> do print "error" main

Artem
02.09.2018
13:46:48
Спасибо)

A64m
02.09.2018
13:47:11
смотря для чего тип, если для каких-то проверок, то лучше ликвид хаскель если для выведения кода - ликвид хаскель не годится, придется с синглетонами страдать

Terminator
02.09.2018
15:08:34
Ivan будет жить. Поприветствуем!

Alexander
02.09.2018
15:42:55
Как это?
Все переменные в словаре, на словарь можно сослаться

Terminator
02.09.2018
16:43:37
Cesare Borgia будет жить. Поприветствуем!

Блаженный
02.09.2018
16:43:52
Terminator
03.09.2018
01:40:49
@eliascygnus будет жить. Поприветствуем!

A64m
03.09.2018
09:07:13
удивительно, но ни на реддите, ни в рассылочках сегодня я не нашел ничего, от чего бы я разрывался от злости. но твиттер не подвел: > When You Should Use Lists in Haskell (Mostly, You Should Not)

Alexander
03.09.2018
09:11:59
Ты про эту прекрасную статью? http://www.imn.htwk-leipzig.de/~waldmann/etc/untutorial/list-or-not-list/

A64m
03.09.2018
09:13:02
про ее более новую версию https://arxiv.org/pdf/1808.08329.pdf

Google
Alexander
03.09.2018
09:13:53
Так нормальная статья вроде

A64m
03.09.2018
09:14:01
нет

Alexander
03.09.2018
09:14:04
там пишется про то что если вы хотите !! или sort то вам нужен не List

экспрессивно но видимо накипело у человека

A64m
03.09.2018
09:14:27
это не верно

Alexander
03.09.2018
09:14:38
почему?

A64m
03.09.2018
09:17:21
потому что использовать !! для получения какой-то n-ой итерации полностью нормально, плохо многократно запрашивать что-то из списка по индексу, но это и ежу понятно, для этого статьи писать не надо также списковый сорт обладает кучей полезных свойств, которые в хаскельной экосистеме заменить просто нечем, например у него хорошая производительность на в основном упорядоченных последовательностях

Alexander
03.09.2018
09:18:45
ну в целом логично

хотя это уже ближе к низкоуровнему хакингу имхо

A64m
03.09.2018
09:19:38
я уж не говорю, что единстенная альтернатива sort в хаскеле - это отдельный полумертвый пакет

вообще стандартный список одна из немногих вещей в хаскельной экосистеме 1) более-менее доделанных 2) заметно лучше чем аналогичные инструменты в других языках (обычно зоопарк из итераторов и костылей для матчинга и мемоизации)

Dmitry
03.09.2018
09:25:40
а что ещё по п.1 не хватает?

Index
03.09.2018
09:25:59
Итераторы хоть effectful, а на списках-то не выйдет, нужны всякие кондуиты

Которые уже не такие супер доделанные

A64m
03.09.2018
09:26:26
да

а что ещё по п.1 не хватает?
не все оптимизируется, что уже умеют оптимизировать, некоторых важных утилит нету из коробки (вроде делителя на чанки и композиционного сворачивателя)

Ilya
03.09.2018
10:07:25
нет
Он ещё и хаскель преподает

Андрей
03.09.2018
10:08:07
потому что некто Александр Вершилов 100 раз говорил, что листы в сабже это скорее не датаструксчи а контрол струкчи и юзать их надо соответственно

Ilya
03.09.2018
10:11:43
Я помню экспериментировал с (!!) и обнаружил, что он очень быстрый. Намного более быстрый, чем кажется из его рекурсивного определения

Google
Alexander
03.09.2018
10:25:27
угу

но вот цикл из !! будет плохим

если реализовать разворачивание списка через length и !!

A64m
03.09.2018
10:44:59
вот с эффектами да, проблема, и даже доп.пакетами как следует не решенная, не то что из коробки. может в каком-то более лучшем хаскеле можно было что-то вроде стриминга использовать для всего, в том числе и вместо списков, но гхц не сможет такие стримы соптимизировать до аналогичной спискам производительности в случае Identity "эффекта"

Ну и понятно, что эта-то проблема с статье вообще не обсуждается

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

Dmitry
03.09.2018
10:59:24
угу
А что значит, "контрольная структура"?

Alexander
03.09.2018
10:59:36
структура определяющая control flow программы

т.е. та по которой происходит выполнение, например список ~ цикл

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

A64m
03.09.2018
11:04:46
но одна из главных причин, почему у меня так бомбануло, это именно подача материала мой любимый отрывок: > At the very top of the page, it presents example code that is supposed to highlight typical features of the language. We see a version of Eratosthenes’ sieve that generates an infinite list of primes. Declarative it certainly is. But see - Lists, numbers. Must be typical Haskell. > Also, that example code features list comprehensions - that’s more syntactic sugar to misguide beginners. And it claims “statically typed code” in the previous line, but - there is no type annotation in the code. Yes, I know, the types are still there, because they are inferred by the compiler, but what do es a beginner think? МЕНЯ АЖ ТРИСЕТ

А что значит, "контрольная структура"?
контрол-структура оптимизирована для передачи данных между функциями (и соотвественно может материализоваться не полностью, позволяет ранний останов и прочие фичи), в отличие от структур которые оптимизируют футпринт по памяти для хранения полностью материализованной структуры или там оптимизируют поиск

Dmitry
03.09.2018
11:07:22
Ага, так понятней

А что, автор той статьи какой-то именитый дядька? Какая разница, что кто-то неправ в интернете?

A64m
03.09.2018
11:09:08
нет, но чтоб меня затроллить знаменитым быть не обязательно

Alexander
03.09.2018
11:09:26
решето эратосфена кстати крутая задача

можно давать джунам, если у них вместо маркерной доски что то нормальное

Ilya
03.09.2018
11:19:44
решето эратосфена кстати крутая задача
настолько крутая, что джуны не справятся:) это же баян

Google
Ilya
03.09.2018
11:19:55
что решето на хаскеле типа не решето, т.к. слишком медленное

A64m
03.09.2018
11:20:02
ладно, мою любимую часть можно еще больше сконцентрировать > it claims “statically typed code” in the previous line, but - there is no type annotation in the code

это т.н. "решето тернера"

A64m
03.09.2018
11:21:56
(на самом деле решето тернера по-другому выглядит, но это тоже так называют)

Ilya
03.09.2018
11:24:40
A64m
03.09.2018
11:27:01
твит двухдневной давности, слишком поздно отвечать уже

Yuriy
03.09.2018
11:34:51
А что значит, "контрольная структура"?
там не контрольная, а control, то есть управляющая

A64m
03.09.2018
11:43:10
я смотрю, пол филипс хаскель изучает

может хоть покритикует хаскель нормально, а то нормальной критики мало

A64m
03.09.2018
11:46:19
основной контрибьютор (бывший) в скалистый компилятор (будующий бывший), широко известный в узких кругах докладами о том, какое скала говно

Denis
03.09.2018
11:47:56
A
03.09.2018
11:48:10
скала говно, говно имеет право на существование )

Alex
03.09.2018
11:49:04
Де Гоуз который

Прикольная тенденция

Denis
03.09.2018
11:49:34
Google
Alex
03.09.2018
11:49:50
Slamdata?
Без понятия, что это :)

A64m
03.09.2018
11:50:40
Это нормальный подход. если пользуешься чем-то нужно объяснять почему это говно, чтоб исправить ошибки (этого филипс, правда, не добился, но хоть попытался)

хаскелистам такого здравого отношения к хаскелю обычно очень нехватает

A64m
03.09.2018
11:56:30
вообще, завидую скалистому комьюнити, они там так бодро дискутируют, а у хаскелистов один эхочамбер и серклджерк. Разве что раз в полгода стек вс кабал (скоро очередная серия будет, когда снойманиты замену хекеджу выкатят) правда скаладелы на все это плюют, так что вся дискуссия напрасна - вот этому не завидую, конечно

Ilya
03.09.2018
11:57:07
Я это пожалуй, в мемориз занесу
Нужно чтобы @A64m_qb0 прямо сказал, что хаскель говно. Тогда можно в мемориз

A64m
03.09.2018
11:57:47
так и хаскель говно

Alex
03.09.2018
11:57:54
Твои мемориз - твои критерии, не спорю

A64m
03.09.2018
11:58:08
нашел поиском за три секунды

Alexander
03.09.2018
12:04:54
настолько крутая, что джуны не справятся:) это же баян
ну они в школе учили оригинальный алгоритм, а их просят переделать в бесконечный список

имхо достаточно просто для джуна все же

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