Anonymous 
    
    
        
        
        
        Может он индексы строит, потому и не работает.  А потом построил и начал работать.
    
 
    
    Anonymous 
    
    
        
        
        
        Не пользовался vs в принципе
    
 
    
    Евгений 
    
    
        
        
        
        А чо кто neovim-haskell ставил?
    
 
    
    blkmrkt 
    
    
        
        
        
        говорят с емаксом лучший иде хаскеля, но я с ним не справился. Точнее все настроил, но слишком сложный интерфейс
    
 
    
    Ale 
    
    
 
    
    Anton 
    
    
 
    
    blkmrkt 
    
    
 
    
    Anton 
    
    
        
        
        
        Спасибо, приглянулся мне)
    
 
    
    dron 
    
    
        
        
        
        крайне приятный и кастомизируемый шрифтец. сам на нем сижу давно
    
 
    
    Boris 
    
    
        
        
        
        Хаха
    
 
    
    Boris 
    
    
 
    
    blkmrkt 
    
    
 
    
    Alexander 
    
    
        
        
        
        Привет, подсажите как прочитать три числа из входного потока ?
        То есть входные даныые 6 6 4. Нужно прочитать числа. Какие функции использовать ?
    
 
    
    Max 
    
    
 
    
    Dmitry 
    
    
        
        
        
        fmap read . words <$> getContents
    
 
    
    Dmitry 
    
    
        
        
        
        fmap read . take 3 . words <$> getContents
    
 
    
    blkmrkt 
    
    
 
    
    Alexander 
    
    
        
        
        
        или getLine если принципиально что они в одной строке и дальше вычитывать не надо
    
 
    
    Alexander 
    
    
        
        
        
        В одной строке должны нахдиться это условие задачи.
    
 
    
    Dmitry 
    
    
        
        
        
        λ> n <- fmap read . take 3 . words <$> getLine :: IO [Int]
        12 3 4 
        λ> n
        [12,3,4]
        λ>
    
 
    
    Alexander 
    
    
        
        
        
        спасибо
    
 
    
    Oleg 
    
    
 
    
    Oleg 
    
    
        
        
        
        import qualified Data.ByteString.Char8 as BS
        
        -- getInts::IO [Int]
        -- getInts = fmap (unfoldr readOne) BS.getLine where
        --   readOne s = do
        --     (x , s') <- BS.readInt s
        --     return (x, BS.drop 1 s')
        
        getInts::IO [Int]
        getInts = go <$> BS.getLine where
          go s = case  BS.readInt s of
              Nothing      -> []
              Just (x, s') -> x : go (BS.drop 1 s')
        
        getInt::IO Int
        getInt = do
          line <- BS.getLine
          let Just (x, _ ) = BS.readInt line
          return x
        
        
        getInt2::IO (Int,Int)
        getInt2 = do
          line <- BS.getLine
          let Just (x, l') = BS.readInt line
              Just (y, _)  = BS.readInt $ BS.drop 1 l'
          return (x,y)
        
        getInt3::IO (Int,Int, Int)
        getInt3 = do
          line <- BS.getLine
          let Just (x, l') = BS.readInt line
              Just (y, l'')  = BS.readInt $ BS.drop 1 l'
              Just (z, _) = BS.readInt $ BS.drop 1 l''
          return (x,y,z)
    
 
    
    Alexander 
    
    
        
        
        
        http://codeforces.com/problemset
    
 
    
    Oleg 
    
    
 
    
    Oleg 
    
    
        
        
        
        На хакерранке ещё вытянул бы, а на кодфорсес - используй что угодно, кроме read
    
 
    
    Oleg 
    
    
        
        
        
        везде, где input начинается от 10^5
    
 
    
    Anonymous 
    
    
        
                    
                        
                            
                            read супермедленный
                        
                    
                
        
        
        у меня лишь только в одной спортивной задачке медленный cin из C++ был ботлнеком. далеко не во всех задачах подразумевается гигантский инпут
    
 
 
    
    Oleg 
    
    
 
    
    Anonymous 
    
    
        
        
        
        зачем вообще эти задачи на хаскеле решать? одно мучение
    
 
    
    Oleg 
    
    
        
        
        
        отнюдь
    
 
    
    Oleg 
    
    
        
        
        
        dp на хаскеллевских array вообще офигенно выглядит
    
 
    
    Anonymous 
    
    
        
        
        
        на списках тоже можно вроде))
    
 
    
    Oleg 
    
    
 
    
    Anonymous 
    
    
 
    
    Oleg 
    
    
 
    
    Oleg 
    
    
        
        
        
        import qualified Data.ByteString.Char8 as BS
        
        -- getInts::IO [Int]
        -- getInts = fmap (unfoldr readOne) BS.getLine where
        --   readOne s = do
        --     (x , s') <- BS.readInt s
        --     return (x, BS.drop 1 s')
        
        getInts::IO [Int]
        getInts = go <$> BS.getLine where
          go s = case  BS.readInt s of
              Nothing      -> []
              Just (x, s') -> x : go (BS.drop 1 s')
        
        getInt::IO Int
        getInt = do
          line <- BS.getLine
          let Just (x, _ ) = BS.readInt line
          return x
        
        
        getInt2::IO (Int,Int)
        getInt2 = do
          line <- BS.getLine
          let Just (x, l') = BS.readInt line
              Just (y, _)  = BS.readInt $ BS.drop 1 l'
          return (x,y)
        
        getInt3::IO (Int,Int, Int)
        getInt3 = do
          line <- BS.getLine
          let Just (x, l') = BS.readInt line
              Just (y, l'')  = BS.readInt $ BS.drop 1 l'
              Just (z, _) = BS.readInt $ BS.drop 1 l''
          return (x,y,z)
    
 
    
    Dmitrii 
    
        
            
        
            
     
    
        
        
        
        На Haskell может хотеться решать задачи ради челленджа, чтобы узнать получше язык и, возможно, доказать (себе или всем остальным), что на нём можно писать олимипадные задачи. Например, техника ленивого динамического программирования очень изящная и простая: 
        http://jelv.is/blog/Lazy-Dynamic-Programming/
        
        Другое дело, что на codeforces используется следующая команда для компиляции решений на Haskell (не говоря уже о том, что компилятор вообще 7.8.3): 
        
        ghc --make -O %s
        
        А это значит, что никакого эффективного представления текста, никаких структур данных типа Map или HashMap, даже монады State нет и прочего. Поэтому про серьёзное олимпиадное программирование задач на производительность с большими ограничениями можно забыть. Все эти вещи (ну, кроме монады State) в остальных привычных для олимпиадного программирования языках просто уже находятся в стандартной библиотеке. То есть данная система тупо не учитывает особенности экосистемы языка. К сожалению, я не видел хорошей в этом плане платформы для решения олимпиадных задач на Haskell :(
    
 
    
    Dmitrii 
    
    
        
        
        
        Так как все эти вещи не в base, а в различных библиотека
    
 
    
    Artyom 
    
    
        
        
        
        containers вроде точно где-то давали использовать
        
        то ли на spoj, то ли на CF
    
 
    
    Oleg 
    
        
            
        
            
     
    
        
                    
                        
                            
                            На Haskell может хотеться решать задачи ради челленджа, чтобы узнать получше язык и, возможно, доказать (себе или всем остальным), что на нём можно писать олимипадные задачи. Например, техника ленивого динамического программирования очень изящная и простая: 
                    http://jelv.is/blog/Lazy-Dynamic-Programming/
                    
                    Другое дело, что на codeforces используется следующая команда для компиляции решений на Haskell (не говоря уже о том, что компилятор вообще 7.8.3): 
                    
                    ghc --make -O %s
                    
                    А это значит, что никакого эффективного представления текста, никаких структур данных типа Map или HashMap, даже монады State нет и прочего. Поэтому про серьёзное олимпиадное программирование задач на производительность с большими ограничениями можно забыть. Все эти вещи (ну, кроме монады State) в остальных привычных для олимпиадного программирования языках просто уже находятся в стандартной библиотеке. То есть данная система тупо не учитывает особенности экосистемы языка. К сожалению, я не видел хорошей в этом плане платформы для решения олимпиадных задач на Haskell :(
                        
                    
                
        
        
        есть там containers, нормально часто Map и IntMap Заходит, да и State
    
 
 
    
    Oleg 
    
    
 
    
    Alexander 
    
    
        
        
        
        и vectors
    
 
    
    Alexander 
    
    
        
        
        
        а то иначе приходится использовать array для которого ни одного разумного довода в 2017 нет
    
 
    
    Нурлан 
    
    
 
    
    Dmitry 
    
    
        
        
        
        а какой смысл решать спортивные задачи на языке, которого не знаешь?
    
 
    
    Alexander 
    
    
        
        
        
        не использовать как data structure, как control норм
    
 
    
    Dmitry 
    
    
        
        
        
        ну просто вряд ли достишнешь высоких резутьтатов на языке,  которым не владеешь. если же это просто для практики, то это ок, конечно.
    
 
    
    Dmitry 
    
    
        
        
        
        но тогда зачем вместо идеоматичного решения, которое якобы медленное, писать неидеоматичное на явной рекурсии, если про производительность ничего не говорится в условии, да и высказывание довольно-то таки голословное.
    
 
    
    Dmitry 
    
    
        
        
        
        хоть бенчмарк запилите, насколько read уступает вот этому вот, что тут написали
    
 
    
    Dmitry 
    
    
        
        
        
        в любом случае, то, что вы хотите выглядит скорее так:
        L.take 3 $ L.unfoldr (readInt . C8.dropWhile isSpace) "10 20 30 40"
        чем та портянка с явной рекурсией
    
 
    
    Alexander 
    
    
        
        
        
        кстати на хаккерранке не раз натыкался на проблему с инлайнером
    
 
    
    Alexander 
    
    
        
        
        
        всегда забываю пример, но если правильно помню то с fmap read. words можно наткнуться что его заинлайнит и каждый раз будут заново парсить цифры
    
 
    
    Alexander 
    
    
        
        
        
        в итоге решение тупит и тормозит где не должно
    
 
    
    Alexander 
    
    
        
        
        
        а если фмапом это не поднимать сразу то все ок
    
 
    
    Dmitry 
    
    
        
        
        
        в общем, еще есть какие-то искусственные ограничения, которые вынуждают писать какой-то изврат вместо нормального кода
    
 
    
    Dmitry 
    
    
        
        
        
        сразу этого не видно
    
 
    
    Alexander 
    
    
        
        
        
        причем там разница fmap foo bar vs bar >>= return . foo
    
 
    
    Alexander 
    
    
        
        
        
        fmap вообще подлый
    
 
    
    Alexander 
    
    
        
        
        
        хорошо щас <$!> есть
    
 
    
    Alexander 
    
    
        
        
        
        у Кирилла подобная штука в реальном коде была, там в thunk уходил deepseq и в итоге вычислялось все не в том треде
    
 
    
    Alexander 
    
    
        
        
        
        пока курс на степике ещё не забыли, а какой там принцип попадения решений в Solutions, которые открываются по сдаче задачи?
    
 
    
    Anton 
    
    
 
    
    Alexander 
    
    
        
        
        
        да, нашел уже
    
 
    
    Anonymous 
    
    
        
        
        
        у кого какие в итоге результаты по курсу?
    
 
    
    Anonymous 
    
    
        
        
        
        среди тех, кто проходил его
    
 
    
    Anonymous 
    
    
        
        
        
        Ребят! Чем fmap отличается от map?
    
 
    
    Алдар 
    
    
        
        
        
        для списка это одно и тоже
    
 
    
    Anonymous 
    
    
        
        
        
        Т.е. map сейчас бесполезен?
    
 
    
    Alexander 
    
    
        
        
        
        ну он фиксирует тип
    
 
    
    Alexander 
    
    
        
        
        
        например:
        map (+1) $ fromList [1..10] -- скомпилируется
        fmap (+1) $ fromList [1..10] -- нет
    
 
    
    Alexander 
    
    
        
        
        
        Prelude GHC.Exts> map (+1) $ fromList [1..10]
        [2,3,4,5,6,7,8,9,10,11]
        Prelude GHC.Exts> fmap (+1) $ fromList [1..10]
        
        <interactive>:3:1: error:
            • Non type-variable argument in the constraint: Num (Item (f b))
              (Use FlexibleContexts to permit this)
            • When checking the inferred type
                it :: forall (f :: * -> *) b.
                      (Num (Item (f b)), Num b, Functor f, Enum (Item (f b)),
                       IsList (f b)) =>
                      f b
    
 
    
    Alexander 
    
    
        
        
        
        новые бананы!
    
 
    
    Anatolii 
    
    
        
        
        
        я всю неделю думал, когда уже бананы будут новые
    
 
    
    Anatolii 
    
    
        
        
        
        спасибо:)