Я нашел первый пример использования Shake
, демонстрирующий шаблон, который кажется подверженным ошибкам:
contents <- readFileLines $ out -<.> "txt"
need contents
cmd "tar -cf" [out] contents
Зачем нам need contents
, когда readFileLines
читает их, а cmd
ссылается на них? Значит ли это, что мы можем не требовать ApplicativeDo
?
ApplicativeDo
может помочь? - person Neil Mitchell   schedule 29.02.2016Monad
интерфейсу (по сравнению сHaxl
использованиемApplicativeDo
)? Почему бы вместо этого не определить цельtar
с правильной семантикой во входных файлах? Однако я могу быть слишком осторожен со сложными вещами Haskell подShake
. - person sevo   schedule 01.03.2016need
? Это необходимо, потому что вы должны сообщить Shake, что будет использоватьtar
, потому что он понятия не имеет, что делаетtar
. Вы правы, люди могут определитьtar inp out = do need inp; cmd "tar -cf" [out] inp
- и действительно, в более крупной системе сборки я бы поощрял это. - person Neil Mitchell   schedule 01.03.2016