# satisfies?
Check whether a value implements a named protocol, returning `true` or `false`.
Looks up the value's type name (a tagged map's tag, or the built-in type name)
and searches the type registry for a `defimpl` of that protocol, walking the
type's inheritance chain.
## Syntax
[satisfies? $val $protocol-name]
## Parameters
- `$val` — Any value: a tagged-map instance, or a built-in type such as a list,
map, string, or array.
- `$protocol-name` — Protocol name as a string, e.g. `"Drawable"`. A keyword or
other type is rejected with `%Err{:message expected string argument}`.
## Examples
defprotocol Showable %{ show {} } deftype Point %{ x %{} y %{} } defimpl Point Showable { show {|| "Point"} } [satisfies? [Point 1 2] "Showable"] # → true [satisfies? 42 "Showable"] # → false
## Returns
Boolean — true when a `defimpl` of `$protocol-name` is registered for the
value's type or an ancestor type; false otherwise.
## See Also
`defprotocol`, `defimpl`, `deftype`, `type`