# A precise definition of what it means to be an instance of an abstract type

**URL:** <https://discourse.julialang.org/t/a-precise-definition-of-what-it-means-to-be-an-instance-of-an-abstract-type/57270>\
**Category:** New to Julia\
**Tags:** question\
**Created:** [March 16, 2021, 7:45am UTC](https://discourse.julialang.org/t/a-precise-definition-of-what-it-means-to-be-an-instance-of-an-abstract-type/57270 "2021-03-16T07:45:56Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [March 16, 2021, 9:54am UTC](https://discourse.julialang.org/t/a-precise-definition-of-what-it-means-to-be-an-instance-of-an-abstract-type/57270/5 "2021-03-16T09:54:24Z")

</div>

I’m not sure what you mean by “value vy of y” in your definition. If it’s saying that `y` is an abstract type that implements vy in the way that `Int64` is a concrete type that implements `1`, then that’s impossible because by definition, only concrete types implement. It looks fine if that detail is omitted: in more familiar terms, `x isa y` if and only if `typeof(x) <: y`.

Couple things:

- `isconcretetype(aType)` can be used to distinguish a concrete type and an abstract type. `Ptr` is definitely abstract.
- `Ptr{Float64}` is a subtype, not an instance, of `Ptr`.

---

_[View the full topic](https://discourse.julialang.org/t/a-precise-definition-of-what-it-means-to-be-an-instance-of-an-abstract-type/57270)._
