<p>I don't understand what first class object means, is this word be agreed or strictly defined?</p>
<p>For example, what is <code>first class function</code>? As long as the function can assign a value to the variable or pass as a parameter transmission?</p>
<p>If I try to declare my language with <code>first class effect</code>, what ability does my language need?</p>

<first-class-objects>
When can I declare that my language has 'first class X'
<p>The formal definition of a first-class citizen is available on <a href="https://en.wikipedia.org/wiki/First-class_citizen" rel="noreferrer">Wikipedia</a>. Generally, X is first-class if it can be used just like any other object in your language.</p>
<p>For first class effects in particular, you'd need to have effects fully represented as objects. From what limited knowledge I have of the concept of effects, having access to the populated effect container from a handler and being able to perform operations like <code>resume</code> on it should probably suffice.</p>

CC BY-SA 4.0
2023-07-06T13:29:49.413Z
2023-07-06T13:29:49.413Z
abel1502
CC BY-SA 4.0
2023-07-06T23:51:21.723Z
s/object/value/
Bergi
# When can I declare that my language has 'first class X'
Posted by: username_0 on 2023-07-06
I don't understand what first class object means, is this word be agreed or strictly defined?

For example, what is `first class function`? As long as the function can assign a value to the variable or pass as a parameter transmission?

If I try to declare my language with `first class effect`, what ability does my language need?
**Tags:** first-class-objects
---
## 1 answers
### Answer by username_1 on 2023-07-06. Score: 6 | Accepted answer
The formal definition of a first-class citizen is available on [Wikipedia](https://en.wikipedia.org/wiki/First-class_citizen). Generally, X is first-class if it can be used just like any other object in your language.

For first class effects in particular, you'd need to have effects fully represented as objects. From what limited knowledge I have of the concept of effects, having access to the populated effect container from a handler and being able to perform operations like `resume` on it should probably suffice.
> **Comments:**
> **username_2** (2023-07-06): s/object/value/  
---
