Alexander
тогда советую брать vector
Dmitry
Это не задание в универе, это http://codeforces.com/contest/742/problem/C
Dmitry
Но замечание про систему проверки по-прежнему актуально
timothy
hah, еще не было ссылки http://simonmar.github.io/posts/2016-12-08-Haskell-in-the-datacentre.html ?
Alexander
import Control.Applicative
import Prelude
и будет на всех ghc без warning-ов работать
Alexander
на многих системах ставят популярные либы
Dmitry
А как перекрыть импортированный из Prelude символ?
Dmitry
Нашёл. import hiding
Dmitry
Товарищи, не мог бы кто-то мне сделать code review?
http://codeforces.com/contest/742/submission/22950482
Alexander
а какие символы надо было спрятать?
Dmitry
<$> из Prelude, чтобы локально компилировалось
Alexander
оно реэкспортирует же
Alexander
import Control.Applicative
import Prelude
вот именно так будет работать без ворнингов
Alexander
т.е. из Applicative не явно, а импорт Prelude после
Alexander
f <$> a = do
t <- a
return $ f t
нинада так, нужно или нормальный или fmap
Dmitry
Почему два импорта на один символ?
Alexander
чтобы не было warning-ов на версиях д AMP и после
Alexander
просто забавный хак, использующий правила того, как работают warning-и на redundant import
Alexander
import Control.Applicative <- благодаря этому работает на <7.10
Alexander
import Prelude <- благодаря этому не генерируется warning на >=7.10
Alexander
whileM p f = do { x <- p; when x (f » whileM p f) }
Alexander
т.е. там как-то слишком много строчек
Dmitry
http://codeforces.com/contest/742/submission/22950581
Теперь у меня локально выдаётся warning, что Module ‘Control.Monad.ST.Safe’ is deprecated, но иначе это не компилируется на сервере с ошибкой
Control.Monad.ST: Can't be safely imported!
The module itself isn't safe.
Alexander
посмотри документацию, что использовать взамен
Alexander
я на память не скажу, никогда его не импортирова
Dmitry
GHC 8.0.1 локально при компиляции с Safe:
Module ‘Control.Monad.ST.Safe’ is deprecated:
Safe is now the default, please use Control.Monad.ST instead
GHC 7.8.3 на сервере без Safe:
program.hs:6:1:
Control.Monad.ST: Can't be safely imported!
The module itself isn't safe.
program.hs:7:1:
Data.Array.ST: Can't be safely imported!
The module itself isn't safe.
Alexander
что мешает последовать совету?
Alexander
liftM == fmap == <$>
Dmitry
Dmitry
Alexander
words »> map read наверное ничем не лучше map read . words
Alexander
не, к warning
Alexander
never use foldl use foldl' instead
Alexander
причин использовать foldl вообще нигде нету, (ну т.е. по приколу можно придумать, но там можно foldr с большим успехом взять)
Quet
почему кстати до сих пор не переименовали?
Alexander
незя
Alexander
денотационную семантику меняет и репорты и стандарты и вообще нужно смотреть треды в cafe
Quet
есть 2 человека у которых код завязан именно на foldl? :)
Dmitry
never use foldl use foldl' instead
Очень странная ошибка про foldl':
• Variable not in scope:
foldl' :: (Integer -> Integer -> Integer) -> Integer -> [Int] -> t
• Perhaps you meant one of these:
‘foldl’ (imported from Prelude), ‘foldl1’ (imported from Prelude),
‘foldr’ (imported from Prelude)
Perhaps you want to add ‘foldl'’ to the import list
in the import of ‘Data.Foldable’ (c.hs:9:1-27).
Alexander
там были причины
Alexander
import Data.List
Alexander
http://www.well-typed.com/blog/2014/04/fixing-foldl/
Alexander
пост можно почитать на досуге, очень интересный
Alexander
алгоритм сам смотреть лень, или кто другой или вечером. а то из контектса работы не охота вылезать
Dmitry
Да я хотел больше про стиль кода узнать, чем про алгоритм )
Dmitry
Вроде внёс все исправления:
http://codeforces.com/contest/742/submission/22952207
Теперь подсветка поехала :(
Dmitry
К чёрту foldl', вот с foldr и нормальной подсветкой:
http://codeforces.com/contest/742/submission/22953341
Quet
там были причины
не было возможности сделать seq ) отличные причины тащить это легаси
Quet
статья хорошая, да
Alexander
про тащить к легаси это к парням с чашкой на эмблеме
Quet
“а в америке негров линчуют” )
Alexander
вопрос уже поднимался не раз
Alexander
вместо того, чтобы поднимать ещё раз наверное лучше обратиться к источникам, и если поднимать, то с учетом уже прочитанного
Vladimir
А есть кто-нибюудь на винде с проблемами типа `setup-Simple-Cabal-1.22.5.0-ghc-7.10.3.exe: permission denied
'cabal copy' failed. Error message:`
Vladimir
при stack build
Vladimir
причем довольно рандомно и так же рандомно лечится
Vladimir
все, разобрался
Vladimir
какой-то sneaky процесс
ㅤ
http://www.pyret.org
blkmrkt
я взялся делать опенсос утилиту, и хочу чтоб бинарники билдились автоматом для OS X и для линупсов. Может есть гайд как это настроить с CircleCI/Travis?
blkmrkt
Anonymous
Quet
напиши на го, там кросс-компиляция человеческая
Quet
если на хаскеле то несколько машин на которых собирать
Vladislav
Quet
на жабе нужно чтобы рантайм был на машине
blkmrkt
Quet
хотя жаба как бы ее не хуесосили за “write once, run everywhere” тоже вполне нормальная в этом смысле
Anonymous
ее ж вроде как раз за это и хуесосят, не?
Vladislav
"Write everywhere, run once"
Anonymous
вот из-за
Anonymous
>"Write everywhere, run once"
Anonymous
у нее
Anonymous
> performance
Anonymous
а то что verbose код, так он на любом языке может быть. Да и на жабе писать можно как на нормальном языке
blkmrkt
для го даже утилита есть goxc, пушка, правда автор пишет что после го 1.5 она потеряла смысл:
By default, goxc [g]zips (& .debs for Linux) the programs, and generates a 'downloads page' in markdown (with a Jekyll header).
Vladislav