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 ?
Dmitry
ну кроме того, что это задание в универе, а в системе проверки только ghc и либы идущие с ним
На сервере Codeforces (GHC 7.8.3) в Prelude нет даже <$>. (У меня локально 8.0.1, там есть.)
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
я взялся делать опенсос утилиту, и хочу чтоб бинарники билдились автоматом для OS X и для линупсов. Может есть гайд как это настроить с CircleCI/Travis?
ну и чтоб ссылки для скачивания последних версий были постоянные, которые можно в README.md поместить
Quet
напиши на го, там кросс-компиляция человеческая
Quet
если на хаскеле то несколько машин на которых собирать
blkmrkt
напиши на го, там кросс-компиляция человеческая
🤔 и правда, кросс-компиляция в одну строчку, чудеса какие
Vladislav
напиши на го, там кросс-компиляция человеческая
А уж на жаве-то как просто кросскомпилировать
Quet
на жабе нужно чтобы рантайм был на машине
blkmrkt
А уж на жаве-то как просто кросскомпилировать
но бинарники го не требуют же рантайма
Quet
хотя жаба как бы ее не хуесосили за “write once, run everywhere” тоже вполне нормальная в этом смысле
Anonymous
ее ж вроде как раз за это и хуесосят, не?
Vladislav
"Write everywhere, run once"
Vladislav
ее ж вроде как раз за это и хуесосят, не?
Хуесосят её в основном за performance и verbose код
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
а то что verbose код, так он на любом языке может быть. Да и на жабе писать можно как на нормальном языке
ну перфоменс у жавы не хуже хаскелля, кстати, если писать по-человечески)