module Generate.Generate ( module Generate.Generate ) where import Protolude import Text.PrettyPrint.Leijen.Text import Generate.Pretty import Generate.Types ------------------------------------------------------------------------------- -- Pretty ------------------------------------------------------------------------------- prettyElement :: Element -> Doc prettyElement (BF n) = "BF" <+> prettyInteger n prettyElement (EF ns) = "EF" <+> align ( (if null ns then "[" else "[ ") <> hcat (punctuate "\n, " (map prettyElement ns)) <$$> "]" ) prettyElement (PF n) = "PF" <+> prettyInteger n prettyField :: Field -> Doc prettyField (BinaryField fp p) = "BinaryField" <+> prettyText fp <+> prettyInteger p prettyField (ExtensionField fq fp p s k) = align ( "ExtensionField" <+> prettyText fq <+> prettyText fp <+> prettyText p <+> prettyText s <+> prettyField' k ) where prettyField' :: Maybe Field -> Doc prettyField' (Just f) = "(Just" <$$> "(" <+> align (prettyField f) <$$> "))" prettyField' _ = "Nothing" prettyField (PrimeField f2m p) = "PrimeField" <+> prettyText f2m <+> prettyInteger p