Safe Haskell | None |
---|
- class Object a where
- toObject :: a -> SomeObject
- class Object a => Concrete a
- data SomeObject
- getType :: Object self => self -> IO Type
- isInstance :: (Object self, Object cls) => self -> cls -> IO Bool
- isSubclass :: (Object derived, Object cls) => derived -> cls -> IO Bool
- cast :: (Object a, Concrete b) => a -> IO (Maybe b)
- hasAttribute :: Object self => self -> Unicode -> IO Bool
- getAttribute :: Object self => self -> Unicode -> IO SomeObject
- setAttribute :: (Object self, Object v) => self -> Unicode -> v -> IO ()
- deleteAttribute :: Object self => self -> Unicode -> IO ()
- print :: Object self => self -> Handle -> IO ()
- repr :: Object self => self -> IO Unicode
- ascii :: Object self => self -> IO Unicode
- string :: Object self => self -> IO Unicode
- bytes :: Object self => self -> IO Bytes
- callable :: Object self => self -> IO Bool
- call :: Object self => self -> Tuple -> Dictionary -> IO SomeObject
- callArgs :: Object self => self -> [SomeObject] -> IO SomeObject
- callMethod :: Object self => self -> Text -> Tuple -> Dictionary -> IO SomeObject
- callMethodArgs :: Object self => self -> Text -> [SomeObject] -> IO SomeObject
- data Comparison
- richCompare :: (Object a, Object b) => a -> b -> Comparison -> IO Bool
- toBool :: Object self => self -> IO Bool
- hash :: Object self => self -> IO Integer
- dir :: Object self => self -> IO List
- getIterator :: Object self => self -> IO SomeObject
Documentation
toObject :: a -> SomeObjectSource
class Object a => Concrete a Source
Types and casting
getType :: Object self => self -> IO TypeSource
Returns a Type
object corresponding to the object type of self. On
failure, throws SystemError
. This is equivalent to the Python expression
type(o)
.
isInstance :: (Object self, Object cls) => self -> cls -> IO BoolSource
Returns True
if inst is an instance of the class cls or a
subclass of cls, or False
if not. On error, throws an exception.
If cls is a type object rather than a class object, isInstance
returns True
if inst is of type cls. If cls is a tuple, the check
will be done against every entry in cls. The result will be True
when
at least one of the checks returns True
, otherwise it will be False
. If
inst is not a class instance and cls is neither a type object, nor a
class object, nor a tuple, inst must have a __class__
attribute ߞ
the class relationship of the value of that attribute with cls will be
used to determine the result of this function.
Subclass determination is done in a fairly straightforward way, but
includes a wrinkle that implementors of extensions to the class system
may want to be aware of. If A and B are class objects, B is a subclass of
A if it inherits from A either directly or indirectly. If either is not a
class object, a more general mechanism is used to determine the class
relationship of the two objects. When testing if B is a subclass of A, if
A is B, isSubclass
returns True
. If A and B are different objects,
Bߢs __bases__
attribute is searched in a depth-first fashion for
A ߞ the presence of the __bases__
attribute is considered
sufficient for this determination.
isSubclass :: (Object derived, Object cls) => derived -> cls -> IO BoolSource
Returns True
if the class derived is identical to or derived from
the class cls, otherwise returns False
. In case of an error, throws
an exception. If cls is a tuple, the check will be done against every
entry in cls. The result will be True
when at least one of the checks
returns True
, otherwise it will be False
. If either derived or cls
is not an actual class object (or tuple), this function uses the generic
algorithm described above.
cast :: (Object a, Concrete b) => a -> IO (Maybe b)Source
Attempt to cast an object to some concrete class. If the object
isn't an instance of the class or subclass, returns Nothing
.
Attributes
getAttribute :: Object self => self -> Unicode -> IO SomeObjectSource
Retrieve an attribute with the given name from object self. Returns
the attribute value on success, and throws an exception on failure. This
is the equivalent of the Python expression self.name
.
setAttribute :: (Object self, Object v) => self -> Unicode -> v -> IO ()Source
Set the value of the attribute with the given name, for object self,
to the value v. THrows an exception on failure. This is the equivalent
of the Python statement self.name = v
.
deleteAttribute :: Object self => self -> Unicode -> IO ()Source
Delete an attribute with the given name, for object self. Throws an
exception on failure. This is the equivalent of the Python statement
del self.name
.
Display and debugging
repr :: Object self => self -> IO UnicodeSource
Compute a string representation of object self, or throw an exception
on failure. This is the equivalent of the Python expression repr(self)
.
string :: Object self => self -> IO UnicodeSource
Compute a string representation of object self, or throw an exception
on failure. This is the equivalent of the Python expression str(self)
.
bytes :: Object self => self -> IO BytesSource
Compute a bytes representation of object self, or throw an exception
on failure. This is equivalent to the Python expression bytes(self)
.
Callables
call :: Object self => self -> Tuple -> Dictionary -> IO SomeObjectSource
Call a callable Python object self, with arguments given by the
tuple and named arguments given by the dictionary. Returns the result of
the call on success, or throws an exception on failure. This is the
equivalent of the Python expression self(*args, **kw)
.
callArgs :: Object self => self -> [SomeObject] -> IO SomeObjectSource
Call a callable Python object self, with arguments given by the list.
callMethod :: Object self => self -> Text -> Tuple -> Dictionary -> IO SomeObjectSource
Call the named method of object self, with arguments given by the
tuple and named arguments given by the dictionary. Returns the result of
the call on success, or throws an exception on failure. This is the
equivalent of the Python expression self.method(args)
.
callMethodArgs :: Object self => self -> Text -> [SomeObject] -> IO SomeObjectSource
Call the named method of object self, with arguments given by the
list. Returns the result of the call on success, or throws an exception
on failure. This is the equivalent of the Python expression
self.method(args)
.
Misc
richCompare :: (Object a, Object b) => a -> b -> Comparison -> IO BoolSource
Compare the values of a and b using the specified comparison. If an exception is raised, throws an exception.
hash :: Object self => self -> IO IntegerSource
Compute and return the hash value of an object self. On failure,
throws an exception. This is the equivalent of the Python expression
hash(self)
.
dir :: Object self => self -> IO ListSource
This is equivalent to the Python expression dir(self)
, returning a
(possibly empty) list of strings appropriate for the object argument,
or throws an exception if there was an error.
getIterator :: Object self => self -> IO SomeObjectSource
This is equivalent to the Python expression iter(self)
. It returns a
new iterator for the object argument, or the object itself if the object
is already an iterator. Throws TypeError
if the object cannot be
iterated.