Agda-2.8.0: A dependently typed functional programming language and proof assistant

Safe Haskell | None
Language | Haskell2010

Agda.Compiler.MAlonzo.Pragmas

Synopsis

- type HaskellCode = String
- type HaskellType = String
- data HaskellPragma
  - = HsDefn Range HaskellCode
  - | HsType Range HaskellType
  - | HsData Range HaskellType [HaskellCode]
  - | HsExport Range HaskellCode
- getHaskellPragma :: QName -> TCM (Maybe HaskellPragma)
- parsePragma :: CompilerPragma -> Maybe HaskellPragma
- parseHaskellPragma :: CompilerPragma -> TCM (Maybe HaskellPragma)
- sanityCheckPragma :: QName -> HaskellPragma -> TCM (Maybe HaskellPragma)
- getHaskellConstructor :: QName -> HsCompileM (Maybe HaskellCode)
- foreignHaskell :: Interface -> ([String], [String], [String])
- data KindOfForeignCode
  - = ForeignFileHeaderPragma
  - | ForeignImport
  - | ForeignOther
- classifyForeign :: String -> KindOfForeignCode
- classifyPragma :: String -> KindOfForeignCode
- partitionByKindOfForeignCode :: (a -> KindOfForeignCode) -> [a] -> ([a], [a], [a])

# Documentation

type HaskellCode = String Source #

type HaskellType = String Source #

data HaskellPragma Source #

GHC backend translation pragmas.

Constructors

HsDefn Range HaskellCode |
HsType Range HaskellType |
HsData Range HaskellType [HaskellCode] | @COMPILE GHC X = data D (c₁ | ... | cₙ)

HsExport Range HaskellCode

    COMPILE GHC x as f

#### Instances

Instances details

Pretty HaskellPragma Source # |
Instance details Defined in Agda.Compiler.MAlonzo.Pragmas Methods pretty :: HaskellPragma -> Doc Source # prettyPrec :: Int -> HaskellPragma -> Doc Source # prettyList :: [HaskellPragma] -> Doc Source #
HasRange HaskellPragma Source # |
Instance details Defined in Agda.Compiler.MAlonzo.Pragmas Methods getRange :: HaskellPragma -> Range Source #
Show HaskellPragma Source # |
Instance details Defined in Agda.Compiler.MAlonzo.Pragmas Methods showsPrec :: Int -> HaskellPragma -> ShowS Source # show :: HaskellPragma -> String Source # showList :: [HaskellPragma] -> ShowS Source #
Eq HaskellPragma Source # |
Instance details Defined in Agda.Compiler.MAlonzo.Pragmas Methods (==) :: HaskellPragma -> HaskellPragma -> Bool Source # (/=) :: HaskellPragma -> HaskellPragma -> Bool Source #

getHaskellPragma :: QName -> TCM (Maybe HaskellPragma) Source #

Retrieve and parse a `COMPILE GHC` pragma stored for a name.

parsePragma :: CompilerPragma -> Maybe HaskellPragma Source #

parseHaskellPragma :: CompilerPragma -> TCM (Maybe HaskellPragma) Source #

sanityCheckPragma :: QName -> HaskellPragma -> TCM (Maybe HaskellPragma) Source #

Check whether the parsed `COMPILE GHC` pragma matches the kind of identifier it attaches to.

getHaskellConstructor :: QName -> HsCompileM (Maybe HaskellCode) Source #

foreignHaskell :: Interface -> ([String], [String], [String]) Source #

Get content of `FOREIGN GHC` pragmas, sorted by `KindOfForeignCode`: file header pragmas, import statements, rest.

data KindOfForeignCode Source #

Classify `FOREIGN` Haskell code.

Constructors

ForeignFileHeaderPragma | A pragma that must appear before the module header.
ForeignImport | An import statement. Must appear right after the module header.
ForeignOther | The rest. To appear after the import statements.

classifyForeign :: String -> KindOfForeignCode Source #

Classify a `FOREIGN GHC` declaration.

classifyPragma :: String -> KindOfForeignCode Source #

Classify a Haskell pragma into whether it is a file header pragma or not.

partitionByKindOfForeignCode :: (a -> KindOfForeignCode) -> [a] -> ([a], [a], [a]) Source #

Partition a list by `KindOfForeignCode` attribute.