Мой вопрос простой. Почему неправильное сопоставление с образцом не вызывает исключение в монаде Maybe. Для ясности:
data Task = HTTPTask {
getParams :: [B.ByteString],
postParams :: [B.ByteString],
rawPostData :: B.ByteString
} deriving (Show)
tryConstuctHTTPTask :: B.ByteString -> Maybe Task
tryConstuctHTTPTask str = do
case decode str of
Left _ -> fail ""
Right (Object trie) -> do
Object getP <- DT.lookup (pack "getParams") trie
Object postP <- DT.lookup (pack "postParams") trie
String rawData <- DT.lookup (pack "rawPostData") trie
return $ HTTPTask [] [] rawData
Посмотрите на функцию tryConstuctHTTPTask . Я думаю, что когда шаблон не совпадает (например, « Object getP »), мы должны получить что-то вроде «
clean:
del $(DESTDIR_TARGET)
Но в Linux:
clean:
rm $(DESTDIR_TARGET)
Также я хотел бы использовать другой разделитель каталогов в Windows ( \
) и Linux ( /
).
Возможно обнаружение Операционная система Windows в Makefile?
PS: Я не хочу эмулировать Linux в Windows (cygwin и т. Д.)
Есть похожий вопрос: ОС обнаруживает make-файл , но я этого не сделал » Я не найду здесь ответ.