2 > a = variant ([1.0, 2.0, 3.0])
\r
4 [1.0, 2.0, 3.0] : Double[]
\r
7 > matchDatatype DoubleType = "Double"
\r
8 > matchDatatype (ArrayType t) = matchDatatype t + "[]"
\r
9 > matchDatatype (variantDatatype a)
\r
11 > getVariantAsNumber var = match variantDatatype var with
\r
12 > BooleanType -> if variantValue var then 1.0 else 0.0
\r
13 > ByteType -> coerce (coerce (variantValue var :: Byte) :: Integer)
\r
14 > IntegerType -> coerce (variantValue var :: Integer)
\r
15 > LongType -> coerce (variantValue var :: Long)
\r
16 > FloatType -> coerce (variantValue var :: Float)
\r
17 > DoubleType -> variantValue var :: Double
\r
18 > StringType -> coerce (variantValue var :: String)
\r
19 > OptionalType t -> getVariantAsNumber (variantComponent var componentReference)
\r
20 > otherwise -> fail "Variant \(var) is not a number"
\r
21 > getVariantAsNumber (variant True)
\r
23 > getVariantAsNumber (variant (2 :: Byte))
\r
25 > getVariantAsNumber (variant (456 :: Integer))
\r
27 > getVariantAsNumber (variant (Just 2.5 :: Maybe Double))
\r
29 > getVariantAsNumber (variant "23.7")
\r
32 > setPythonVariantVariable "foo" a
\r
33 > executePythonStatement "foo.append(4.0)"
\r
34 > getPythonVariantVariable "foo"
\r
36 [1.0 : Double, 2.0 : Double, 3.0 : Double, 4.0 : Double] : Variant[]
\r
37 > variantValue b :: [Double]
\r
38 [1.0, 2.0, 3.0, 4.0]
\r
39 > import "MMap" as MMap
\r
41 > foo = MMap.create () :: MMap.T String Dynamic
\r
42 > MMap.put foo "c1" (toDynamic (vector [True, True, False, True]))
\r
43 > MMap.put foo "c2" (toDynamic ["foo", "bar", "baz"])
\r
44 > MMap.put foo "c3" (toDynamic 25.0)
\r
45 > setPythonVariantVariable "foo" (variant foo)
\r
46 > executePythonStatement "c1 = foo['c1']"
\r
47 > executePythonStatement "c2 = foo['c2']"
\r
48 > executePythonStatement "c3 = foo['c3']"
\r
49 > (getPythonBooleanArrayVariable "c1", getPythonStringArrayVariable "c2", getPythonDoubleVariable "c3")
\r
50 (vector [True, True, False, True], vector ["foo", "bar", "baz"], 25.0)
\r