Dmitry
итого, рекомендации в порядке: 1) взять готовую библиотеку 2) переписать на Text или ByteString 3) работать с файлом построчно
Vasiliy
можно не пересобирать весь файл, а выводить куски по мере чтения
Vasiliy
но вообще, конечно, взять cassava, если файл большой, приделать pipes или conduit
Aleksei (astynax)
итого, рекомендации в порядке: 1) взять готовую библиотеку 2) переписать на Text или ByteString 3) работать с файлом построчно
я бы 2 и 3 местами поменял. Возможно вариант на String при переводе на построчную обработку будет уже ок
Dmitry
0) забыть, что есть тип String
Aleksei (astynax)
Dmitry
навсегда.
Aleksei (astynax)
Да ладно! Нужно просто помнить, что String, это linked list со всеми вытекающими :)
Aleksei (astynax)
Иногда очень даже удобная штука :)
Dmitry
когда?
Dmitry
паттерн матчинг + рекурсия?
Aleksei (astynax)
ага
Dmitry
это заканчивается аттопарсеком
Vasiliy
когда опечатался и вместо <> написал >> > "hello " >> "world" "worldworldworldworldworldworld"
Aleksei (astynax)
Нужно просто алиас type String = [Char] выпилить :)
Ksenia
спасибо большое
Dmitry
и каков же выбранный путь?
Ksenia
1) для будущего: прочитать Марлоу, не использовать string, использовать готовую библиотеку для работы с csv/psv
Ksenia
2) ну а на текущий момент, так как задача насущная использовать awk
Alexander
String норм иногда, особенно если он constant и известен при компиляции, тогда он радостно превращается в CString, впрочем и для всего low level (System.*) в base он тогже никогда в linked list может не превращаться
Andrey
Я наконец-то морально созрел для установки Убунты на мою Винду 7 (ради Хаскеля). Правильно понимаю, что лучше это сделать через виртуальную машину, а не рядом еще одну ОС и выбирать при старте? Если через виртуалку - то вот здесь http://www.instructables.com/id/Introduction-38/ советуют скачать последнюю Оракловую. Но у меня всреди установленных программ есть уже Windows virtual PC. Мне лучше использовать ее, или скачать ту по ссылке? Это одна и та же програама, но скачанная версия будет новее, или это вообще разные производители (Оракл и Майкрософт)? И что тогда ставить? (Куда ставить-то? (С) Добро пожаловать или посторонним вход воспрещен )))))
Евгений
А не проще VPS'ку купить, если Вам GUI не нужен?
Danila Matveev
the easiest way - virtualbox + vagrant (найти любой понравившийся образ) но я и на венде проблем не видел с хаскеллем, хотя и не плотно его использую
Andrey
Ну началось ) Пойду гуглить что такое VPS. Насчет ГУЯ - не уверен, что не нужен. Заодно и про Вагрант погуглю. Я думал подойти просто - поставить виртуалку, и на нее накатить Убунту.
Евгений
Ну мне кажется, что виртуалка это геморно
Andrey
Оффтоп? Потому что не ИДЕсрач? ))))
Dmitry
виртуалка с линуксом на винде, что бы учить хаскель - это настоящее мужество
Andrey
Снести Винду не вариант. А виртуалку как раз можно вроде безболезненно сносить если что.
Vadim
всем привет
Aleksei (astynax)
В Вагрант ещё и IHaskell можно сбоку подпихнуть
Andrey
Спасибо, уже двое упоминают Вагрант - буду гуглить что это за зверь
Donat
Vagrant это всего лишь обертка для virtualbox
Aleksei (astynax)
Фасад над системами виртуализации типа VirtualBox, позволяющий получить что-то типа Linux в терминале - для запуска компилятора, например, но при этом иметь возможность редактировать исходники привычными средствами, имея папку с сорцами на хостовой ОС
Aleksei (astynax)
Под виндой возможно лучше себя покажет VMWare в качестве бэка для Вагранта
Andrey
А при обычной виртуалке без Вагранта разве у меня она не будет локализована в своем отдельном окне, а все русурсы (файлы) расшарены с доступом отовсюду?
Aleksei (astynax)
В отдельном окне будет и рабочий стол той же убунты, ну или тамошний терминал. Это не то.
Aleksei (astynax)
Vagrant запускает виртуалку "в фоне" и дает возможность сходить на неё по ssh
Aleksei (astynax)
Ну и вагрант форсит disposablilty - чуть что, делаешь vagrant destroy + vagrant up и виртуалка как новая
Alexander
так а обновить до win 10 и юзать WSL не вариант?
Alexander
https://blogs.msdn.microsoft.com/commandline/2017/02/09/haskell-on-bashwsl/
Andrey
Ничесе. Спасибо, придется действительно изучать эти технологии виртуализации.
Andrey
Винда 10 не спасет отца русской демократии - нужна целевая ОС Убунта.
Aleksei (astynax)
так а обновить до win 10 и юзать WSL не вариант?
Думаю, что авторы того же stack винду именно в таком разрезе вряд ли мыслят, так что запросто может получиться, что в этом варианте будет проблем столько же, сколько в "чистой" винде и линуксах вместе взятых :)
Влод
так а обновить до win 10 и юзать WSL не вариант?
а это реально ок работает. я помню дважды пытался всё настроить и как-то обламывался
Aleksei (astynax)
Винда 10 не спасет отца русской демократии - нужна целевая ОС Убунта.
Вот как раз штуки типа vagrant это и позволяют - разработчик может сидеть в комфортной ему ОС, а разрабатывать на ОС нужной для продакшна
Влод
https://blogs.msdn.microsoft.com/commandline/2017/02/09/haskell-on-bashwsl/
это вообще что-то нереальное. как на сайте майкрософта могла оказаться статья мол ставим хаскель в баше
Alexander
а это реально ок работает. я помню дважды пытался всё настроить и как-то обламывался
я не особо юзал, не могу ничего утверждать ( но если цель чисто поиграться - то думаю вполне стоит попробовать
Aleksei (astynax)
Это же MSDN
Alexander
ну а хаскель делается в MS ресерч наполовину :) так что почему бы нет
Aleksei (astynax)
MS как раз и хочет, чтобы в т.ч. и для Linux разрабатывали из под винды, раз уж всё равно в Azure тоже линукса гоняют. Так что мелкософту неплохо от таких статей
Влод
это же MSDN
мсдн ассоциируется со статейками мол настраиваем конекшон с mssql в вижуал студии и инструкция как от бытовой техники.
Aleksei (astynax)
в MSDN всегда много дельфистов было, например :)
Andrey
Я скопипастил тред, буду разбирать и решать что и как ставить. Вагрант похоже будет не лишний, но под него VMWare или Virtual PC или Оракловскую виртуалку - придется еще поспрашивать. Спасибо, заканчиваю оффтоп ,можем продолжать традиционный онтоп про ИДЕ.
Aleksei (astynax)
Он все три умеет
Alexander
WSL научился haskell программы пускать
Alexander
помнится год назад они падали т.к. не все сисколы были реализованы
Bohdan
Как прикрутить в маппер usleep из Unistd, чтобы он выполнялся с задержкой? main = do g <- getStdGen mapM_ (putrStrLn . currentSpeed) (randInt g)
Cheese
@bodqhrohro, сделай эта-расширение функции под мапом
Bohdan
@bodqhrohro, сделай эта-расширение функции под мапом
В do-нотации вышло, а однострочником прибиндить не осилил. Я лалка?
Vasiliy
тут другую надо рассахаривать же
Vasiliy
внутрь mapM_ нужно засунуть (\x -> sleep 10 » (putStrLn . currentSpeed) x)
Aleksei (astynax)
(sleep 10 >>) . putStrLn . currentSpeed не?
Vasiliy
ага
Vasiliy
признаюсь, я ниасилил
Vasiliy
воспользовался pointfree.io
Aleksei (astynax)
Э.. тут то элементарно же!
Aleksei (astynax)
pointfree.io - плохая штука
Vasiliy
я сначала написал именно через do - do sleep 10; putStrLn (currentSpeed x)
Aleksei (astynax)
простые вещи можно и без неё, а сложные - не нужно, иначе станут ещё сложнее
Vasiliy
это сюда уже с оператором и скобками
Vasiliy
в do сходу вообще не очевидно
Vasiliy
согласен, даже в этом случае я бы написал forM_ (randInt g) $ \x -> do ...
Aleksei (astynax)
Но тут то g точно можно вынести!
Vasiliy
потом самому же этот код читать