{-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE EmptyCase #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE InstanceSigs #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeInType #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE CPP #-} -- singletons-2.7 onwards requires StandaloneKindSignatures for TH functions #if MIN_VERSION_singletons(2,7,0) {-# LANGUAGE StandaloneKindSignatures #-} #endif {-| Data kinds and corresponding singletons (via the @singletons@ library) for kinds used in various places in "Language.Fortran.Model". As documentation in Template Haskell is not yet supported, documentation for each data type is given here. == 'Precision' The precision, in bits, of an intrinsic Fortran data type. == 'BasicType' The basic type of an intrinsic Fortran data type. == 'OpKind' TODO == 'precMax' Finds the maximum of two precisions. Use 'PrecMax' at the type level and 'sPrecMax' for singletons. == 'basicTypeMax' Finds the \'largest\' (with respect to the size of the set it semantically represents) of numeric basic types. Also works with non-numeric basic types, but the result in that case is unspecified. Use 'BasicTypeMax' at the type level and 'sBasicTypeMax' for singletons. -} module Language.Fortran.Model.Singletons where #if MIN_VERSION_singletons(3,0,0) import Prelude.Singletons import Data.Ord.Singletons #else import Data.Singletons.Prelude #endif import Data.Singletons.TH $