@haskellru

Страница 1540 из 1551
Aleksey
22.10.2018
14:30:15
isWindows = #ifdef mingw32_HOST_OS True #else False #endif

Dmitry
22.10.2018
14:30:30
isWindows = pure False же!
Тогда уж дальше развлекаться, в сишном стиле: #define pure not

Alexander
22.10.2018
14:32:11
а можно было и return code у format C: смотреть

Dmitry
22.10.2018
14:43:56
Норм, но больше подходит для функции hadWindows

Google
Vitaly
22.10.2018
17:44:45
А есть у кого-нибудь мнение про библиотеку req для http запросов?

Alexander
22.10.2018
17:47:57
могу автора на канал позвать

в какой-то момент в ней были очень странные решения но там вышли новые версии

Vitaly
22.10.2018
17:50:34
Не надо автора!

Alexander
22.10.2018
17:51:58
по мне так и http-client норм

Vitaly
22.10.2018
17:55:52
Мороки с ним много

Artyom
22.10.2018
18:58:23
С автором или с http-client?

Вот почему из двух возможных вариантов я распарсил, что “с автором”? Это знак какой-то, наверно

A64m
22.10.2018
19:03:24
все проблемы от людей

Vitaly
22.10.2018
19:23:53
Я имел в виду http-client!

A64m
22.10.2018
19:34:04
ну все, лин.типы условно приняли

Alexander
22.10.2018
19:34:11
\p/

Maxim
22.10.2018
19:35:25
\p/
а ты принимал в этом участие?

Google
Alexander
22.10.2018
19:35:45
нет почти

в общем в ghc-шном модуле

нет

A64m
22.10.2018
19:38:37
прогноз про релиз без фич пока без изменений https://gist.github.com/klapaucius/8fc2fbb48606e6dd9a9a095898e3fac4

Terminator
22.10.2018
19:48:11
@alex3rd будет жить. Поприветствуем!

@balsoft будет жить. Поприветствуем!

Yuriy
22.10.2018
20:16:21
ну все, лин.типы условно приняли
почему условно? согласились, что будет, но не согласились, когда?

A64m
22.10.2018
20:17:04
там список условий для имплементации

https://github.com/ghc-proposals/ghc-proposals/pull/111#issuecomment-431944078

Alexander
22.10.2018
20:19:06
кстати Krzysztof Gogolewski над ними работать будет

kana
22.10.2018
20:29:32
ghc меня просто нереально удивляет

решил почувствовать себя хаскелистом и решил еще раз посчитать числа фибоначчи

kake
22.10.2018
20:30:22
решил почувствовать себя хаскелистом и решил еще раз посчитать числа фибоначчи
лол. у тебя внешность как будто ты ангелок с картин микеланджело и всякий таких ребят.

те что с пузами

kana
22.10.2018
20:31:22


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

правда второе жрет в два раза больше памяти

Vasily
22.10.2018
20:45:07
Ещё это затести http://pastebin.com/UuGXspjD

kana
22.10.2018
20:46:26
не ну это не так интересно, за логарифм в сикпе и я решал, тут задача была не сами фибы, сколько циклы

Alexander
22.10.2018
20:49:13
ghci не оптимизирует особо

Google
Alexander
22.10.2018
20:49:25
если мерять, то уж с -O

но вообще state да и except нормально работают

Андрей
22.10.2018
20:51:40
лол. у тебя внешность как будто ты ангелок с картин микеланджело и всякий таких ребят.
во-первых этот аватар может не иметь никакого отношения к внешности участника. а во-вторых внешность ангела с таким взглядом - сквозь шелуху прямо в суть вещей, просто так не дается - ее надо заслужить

правда второе жрет в два раза больше памяти
там явно форсится только третий аргумент - из-за необходимости сравнения с 1, а первые 2 не форсятся без опций оптимизации по умолчанию. Можно или выставить их, как советовали выше, или явно принудительно форсить аккумуляторы а и б

kana
22.10.2018
21:05:10
{-# LANGUAGE BangPatterns #-} import Data.Function import Data.STRef import Control.Monad import Control.Monad.ST import Control.Monad.State import Control.Monad.Except fib_rec :: Integer -> Integer fib_rec 1 = 1 fib_rec 2 = 1 fib_rec n = fib_rec (n - 2) + fib_rec (n - 1) fib_tc :: Integer -> Integer fib_tc n = go (1, 1, n) where go (!a, !b, 1) = a go (!a, !b, n) = go (b, a + b, n - 1) stop :: MonadError e m => e -> m a stop = throwError loop :: Monad m => ExceptT e m a -> m e loop m = (\(Left x) -> x) <$> runExceptT (forever m) fib_loop :: Integer -> Integer fib_loop n = flip evalState (1, 1, n) $ loop $ do (!a, !b, n) <- get when (n == 1) $ stop a put (b, a + b, n - 1) fib_mut :: Integer -> Integer fib_mut n = runST $ do state <- newSTRef (1, 1, n) fix $ \continue -> do (a, b, n) <- readSTRef state if n == 1 then pure a else do writeSTRef state (b, a + b, n - 1) continue

Андрей
22.10.2018
21:07:02
странно. у меня во всех подобных хвосторекурсивных циклах с аккумуляторами принудительный форс работал. может у тебя уже они форсятся правда. сравни еще с классикой зипа по сложению от списка и его хвоста

Alexander
22.10.2018
21:07:28
так ещё раз, что кто пытается сделать?

что должно быстрее работать и меньше жрать?

Андрей
22.10.2018
21:08:52
а, так ты в кортеж засунул ))) а он тож ленивый )))

давай уж честно - 3 аргумента, и их форси

kana
22.10.2018
21:13:49
давай уж честно - 3 аргумента, и их форси
да не меняется ничего, да и в tc тоже кортеж

если бы было убегание памяти, то оно наверное бы сильнее чувствовалось, а тут только в два-полтора раза (чем больше итераций, тем меньше разница), на fib 50000 всего полтора раза

так ещё раз, что кто пытается сделать?
почему fib_tc жрет в два раза меньше памяти чем fib_loop

из-за Either?

Alexander
22.10.2018
21:16:27
из-за either точно больше жрать должно

оно жирное

попробуй кстати ещё не в ghci

kana
22.10.2018
21:17:09


Alexander
22.10.2018
21:17:52
количество аллоцированного

Google
Alexander
22.10.2018
21:18:10
тогда either точно будет больше жрать, т.к. выделяется на пару слов больше

Андрей
22.10.2018
21:19:36
я могу только тривиальщину запостить f 0 a = a f n a = f (n-1) (a+n) g 0 a = a g n a = g (n-1) $! (a+n) main = print $ f 1E7 0 —memory peak: 1039 Mb main = print $ g 1E7 0 —memory peak: 3 Mb https://rextester.com/CGE81069

Terminator
22.10.2018
21:24:43
@pl40n0v будет жить. Поприветствуем!

@vadrer будет жить. Поприветствуем!

A64m
23.10.2018
11:35:16
> I would have posted a mildly negative reaction, because I have no use for linear types, find their applications dubious, and think they are an unwarranted addition of complexity - and I say that as someone who has implemented a compiler that supports uniqueness typing in its core language.

(компилятор про который он говорит - это компилятор языка futhark)

Timofey
23.10.2018
12:46:48
Это откуда такое?

A64m
23.10.2018
12:48:12
https://www.reddit.com/r/haskell/comments/9qhaxu/linear_types_proposal_conditionally_accepted_by/e8ac5ra/

A64m
23.10.2018
13:35:49
это "академик" написал

Alexander
23.10.2018
13:37:01
Недостаточно академичный.

A64m
23.10.2018
13:48:13
> Thank a lot for less GC pauses, efficient arrays, less latency, less memory usage, more speed when needed, making Haskell a real alternative for system programming, checking more errors at compile time!!! прислал пользователь Эфшарпер

Maxim
23.10.2018
15:22:26
Хм, народ. А getElems и прочее из MArray лениво отдают мне список или нет? Массив у меня в ST, цель - эффективно пройтись по нему "циклом" (forM_)

Alexander
23.10.2018
15:23:45
выкинуть MArray не предалгать?

Maxim
23.10.2018
15:25:40
Предложи альтернативу

Alexander
23.10.2018
15:25:56
vector

Maxim
23.10.2018
15:26:14
Чем лучше?

Alexander
23.10.2018
15:26:20
всем

Maxim
23.10.2018
15:26:28
А он умеет жить в ST?

Alexander
23.10.2018
15:26:35
лучше оптимизируется, лучше фьюзится

Google
Alexander
23.10.2018
15:26:36
да

более того оно умеет эффективно жить вне ST

Maxim
23.10.2018
15:27:43
Окей, посмотрю

Спасибо

A64m
23.10.2018
16:16:26
как вообще люди начинаю использовать пакет array? его кто-то где-то советует?

Maxim
23.10.2018
16:16:57
я про Data.Array.ST из base вроде

Alexander
23.10.2018
16:17:15
нет

но из пакета array который с ghc идёт

мне в primitive обертки нравятся

kana
23.10.2018
16:17:45
как вообще люди начинаю использовать пакет array? его кто-то где-то советует?
название, маркетинг - очень важная часть почти всего человек ищет массив и находит пакет с таким названием

Alexander
23.10.2018
16:17:52
если fusion не нужон

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