> import "Python"\r
> a = variant ([1.0, 2.0, 3.0])\r
+> a\r
+[1.0, 2.0, 3.0] : Double[]\r
+> variantDatatype a\r
+Double[]\r
+> matchDatatype DoubleType = "Double" \r
+> matchDatatype (ArrayType t) = matchDatatype t + "[]"\r
+> matchDatatype (variantDatatype a)\r
+"Double[]" \r
+> getVariantAsNumber var = match variantDatatype var with\r
+> BooleanType -> if variantValue var then 1.0 else 0.0\r
+> ByteType -> coerce (coerce (variantValue var :: Byte) :: Integer)\r
+> IntegerType -> coerce (variantValue var :: Integer)\r
+> LongType -> coerce (variantValue var :: Long)\r
+> FloatType -> coerce (variantValue var :: Float)\r
+> DoubleType -> variantValue var :: Double\r
+> StringType -> coerce (variantValue var :: String)\r
+> OptionalType t -> getVariantAsNumber (variantComponent var componentReference)\r
+> otherwise -> fail "Variant \(var) is not a number"\r
+> getVariantAsNumber (variant True)\r
+1.0\r
+> getVariantAsNumber (variant (2 :: Byte))\r
+2.0\r
+> getVariantAsNumber (variant (456 :: Integer))\r
+456.0\r
+> getVariantAsNumber (variant (Just 2.5 :: Maybe Double))\r
+2.5\r
+> getVariantAsNumber (variant "23.7")\r
+23.7\r
> b = runPython do\r
> setPythonVariantVariable "foo" a\r
> executePythonStatement "foo.append(4.0)"\r