Copyright | (c) The University of Glasgow 2001 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | libraries@haskell.org |
Stability | experimental |
Portability | portable |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
The Dynamic interface provides basic support for dynamic types.
Operations for injecting values of arbitrary type into a dynamically typed value, Dynamic, are provided, together with operations for converting dynamic values into a concrete (monomorphic) type.
Synopsis
The Dynamic
type
A value of type Dynamic
is an object encapsulated together with its type.
A Dynamic
may only represent a monomorphic value; an attempt to
create a value of type Dynamic
from a polymorphically-typed
expression will result in an ambiguity error (see toDyn
).
Show
ing a value of type Dynamic
returns a pretty-printed representation
of the object's type; useful for debugging.
Instances
Show Dynamic # | Since: base-2.1 |
Exception Dynamic # | Since: base-4.0.0.0 |
Defined in Data.Dynamic toException :: Dynamic -> SomeException # fromException :: SomeException -> Maybe Dynamic # displayException :: Dynamic -> String # |
Converting to and from Dynamic
toDyn :: Typeable a => a -> Dynamic #
Converts an arbitrary value into an object of type Dynamic
.
The type of the object must be an instance of Typeable
, which
ensures that only monomorphically-typed objects may be converted to
Dynamic
. To convert a polymorphic object into Dynamic
, give it
a monomorphic type signature. For example:
toDyn (id :: Int -> Int)
:: Typeable a | |
=> Dynamic | the dynamically-typed object |
-> a | a default value |
-> a | returns: the value of the first argument, if it has the correct type, otherwise the value of the second argument. |
Converts a Dynamic
object back into an ordinary Haskell value of
the correct type. See also fromDynamic
.
Applying functions of dynamic type
dynTypeRep :: Dynamic -> SomeTypeRep #