Skip to content

Latest commit

 

History

History
39 lines (29 loc) · 1.49 KB

20221222122347-anyscriptlanguage.org

File metadata and controls

39 lines (29 loc) · 1.49 KB

AnyScriptLanguage

data AnyScriptLanguage where
     AnyScriptLanguage :: ScriptLanguage lang -> AnyScriptLanguage

deriving instance (Show AnyScriptLanguage)

instance Eq AnyScriptLanguage where
    a == b = fromEnum a == fromEnum b

instance Ord AnyScriptLanguage where
    compare a b = compare (fromEnum a) (fromEnum b)

instance Enum AnyScriptLanguage where
    toEnum 0 = AnyScriptLanguage (SimpleScriptLanguage SimpleScriptV1)
    toEnum 1 = AnyScriptLanguage (SimpleScriptLanguage SimpleScriptV2)
    toEnum 2 = AnyScriptLanguage (PlutusScriptLanguage PlutusScriptV1)
    toEnum 3 = AnyScriptLanguage (PlutusScriptLanguage PlutusScriptV2)
    toEnum err = error $ "AnyScriptLanguage.toEnum: bad argument: " <> show err

    fromEnum (AnyScriptLanguage (SimpleScriptLanguage SimpleScriptV1)) = 0
    fromEnum (AnyScriptLanguage (SimpleScriptLanguage SimpleScriptV2)) = 1
    fromEnum (AnyScriptLanguage (PlutusScriptLanguage PlutusScriptV1)) = 2
    fromEnum (AnyScriptLanguage (PlutusScriptLanguage PlutusScriptV2)) = 3

instance Bounded AnyScriptLanguage where
    minBound = AnyScriptLanguage (SimpleScriptLanguage SimpleScriptV1)
    maxBound = AnyScriptLanguage (PlutusScriptLanguage PlutusScriptV2)

Constructor

  • ScriptLanguage