top | item 10887984

(no title)

morgenkaffee | 10 years ago

I can only encourage to use Haskell for such kinds of problems. This was my first Haskell program and I was productive quite fast thanks to "Learn you a Haskell" and the great Parsec library for parsing the Dockerfile.

If you are an experienced Haskeller I would be very glad if you look over the project and problems in an issue. Because mostly I have no idea whether what I am doing is idiomatic or not.

discuss

order

boothead|10 years ago

The code looks good. One thing you might want to consider is using applicative style for parsing. So

  taggedImage :: Parser BaseImage
  taggedImage = do
    name <- many (noneOf ":")
    reservedOp ":"
    tag <- many (noneOf "\n")
    return $ TaggedImage name tag
Would end up something like:

  taggedImage :: Parser BaseImage
  taggedImage = TaggedImage <$> (many (noneOf "\n") <* reservedOp ":")
                            <*> (many (noneOf "\n")