uni_core/primitives/
mod.rs

1// RUST CONCEPT: Module organization
2// This file declares all the primitive modules and re-exports their functions
3
4// Basic arithmetic operations
5pub mod divide;
6pub mod equals;
7pub mod floor_div;
8pub mod minus;
9pub mod modulo;
10pub mod multiply;
11pub mod plus;
12pub mod trunc_div;
13
14// Comparison operations
15pub mod greater_equal;
16pub mod greater_than;
17pub mod less_equal;
18pub mod less_than;
19pub mod not_equal;
20
21// Basic math functions
22pub mod abs;
23pub mod max;
24pub mod min;
25#[cfg(feature = "advanced_math")]
26pub mod sqrt;
27
28// Advanced math functions
29#[cfg(feature = "advanced_math")]
30pub mod ceil;
31#[cfg(feature = "advanced_math")]
32pub mod floor;
33#[cfg(feature = "advanced_math")]
34pub mod pow;
35#[cfg(feature = "advanced_math")]
36pub mod round;
37
38// Trigonometric functions
39#[cfg(feature = "advanced_math")]
40pub mod cos;
41#[cfg(feature = "advanced_math")]
42pub mod sin;
43#[cfg(feature = "advanced_math")]
44pub mod tan;
45
46// Logarithmic functions
47#[cfg(feature = "advanced_math")]
48pub mod exp;
49#[cfg(feature = "advanced_math")]
50pub mod log;
51
52// Bitwise operations
53pub mod bit_and;
54pub mod bit_not;
55pub mod bit_or;
56pub mod bit_xor;
57
58// Shift operations
59pub mod shl;
60pub mod shr;
61
62// Stack operations
63pub mod drop;
64// exec is now handled specially in the evaluator, not as a primitive
65pub mod pick;
66pub mod return_stack;
67pub mod roll;
68
69// List operations
70pub mod cons;
71pub mod head;
72pub mod list;
73pub mod tail;
74
75// Vector (array) operations
76pub mod vector;
77
78// Record operations
79pub mod record;
80
81// Time operations (platform-agnostic via TimeSource)
82pub mod now;
83
84// Meta operations
85pub mod def;
86pub mod doc;
87pub mod help;
88pub mod val;
89
90// Variable operations (Forth-style)
91pub mod var;
92pub mod fetch;  // @
93pub mod store;  // !
94
95// Local variables (lexically scoped)
96pub mod lval;  // Immutable local constants
97pub mod lvar;  // Mutable local variables
98
99// Control flow - if is now handled specially in the evaluator
100
101// I/O operations
102pub mod print;
103pub mod words;
104pub mod cr;
105pub mod space;
106
107// Stack management
108pub mod clear;
109pub mod stack;
110
111// String operations
112pub mod to_string;
113
114// Predicate operations
115pub mod null;
116pub mod truthy;
117
118// Type introspection
119pub mod type_of;
120
121// Numeric type promotion
122pub mod numeric_promotion;
123
124// I16 buffer operations (audio/DSP)
125pub mod i16_buffer;
126pub mod i16_ref;
127pub mod i16_set;
128pub mod i16_ops;
129pub mod i16_dsp;
130
131// Re-export all builtin functions for easy access
132
133// Basic arithmetic
134pub use divide::div_builtin;
135pub use equals::eq_builtin;
136pub use floor_div::floor_div_builtin;
137pub use minus::sub_builtin;
138pub use modulo::mod_builtin;
139pub use multiply::mul_builtin;
140pub use plus::add_builtin;
141pub use trunc_div::trunc_div_builtin;
142
143// Comparison operations
144pub use greater_equal::greater_equal_builtin;
145pub use greater_than::greater_than_builtin;
146pub use less_equal::less_equal_builtin;
147pub use less_than::less_than_builtin;
148pub use not_equal::not_equal_builtin;
149
150// Basic math functions
151pub use abs::abs_builtin;
152pub use max::max_builtin;
153pub use min::min_builtin;
154#[cfg(feature = "advanced_math")]
155pub use sqrt::sqrt_builtin;
156
157// Advanced math functions
158#[cfg(feature = "advanced_math")]
159pub use ceil::ceil_builtin;
160#[cfg(feature = "advanced_math")]
161pub use floor::floor_builtin;
162#[cfg(feature = "advanced_math")]
163pub use pow::pow_builtin;
164#[cfg(feature = "advanced_math")]
165pub use round::round_builtin;
166
167// Trigonometric functions
168#[cfg(feature = "advanced_math")]
169pub use cos::cos_builtin;
170#[cfg(feature = "advanced_math")]
171pub use sin::sin_builtin;
172#[cfg(feature = "advanced_math")]
173pub use tan::tan_builtin;
174
175// Logarithmic functions
176#[cfg(feature = "advanced_math")]
177pub use exp::exp_builtin;
178#[cfg(feature = "advanced_math")]
179pub use log::log_builtin;
180
181// Bitwise operations
182pub use bit_and::bit_and_builtin;
183pub use bit_not::bit_not_builtin;
184pub use bit_or::bit_or_builtin;
185pub use bit_xor::bit_xor_builtin;
186
187// Shift operations
188pub use shl::shl_builtin;
189pub use shr::shr_builtin;
190
191// Stack operations
192pub use drop::drop_builtin;
193// exec is now handled specially in the evaluator
194pub use pick::pick_builtin;
195pub use roll::roll_builtin;
196
197// Return stack operations
198pub use return_stack::from_r_builtin;
199pub use return_stack::r_fetch_builtin;
200pub use return_stack::to_r_builtin;
201
202// List operations
203pub use cons::cons_builtin;
204pub use head::head_builtin;
205pub use list::list_builtin;
206pub use tail::tail_builtin;
207
208// Vector (array) operations
209pub use vector::list_to_vector_builtin;
210pub use vector::make_vector_builtin;
211pub use vector::vector_builtin;
212pub use vector::vector_length_builtin;
213pub use vector::vector_ref_builtin;
214pub use vector::vector_set_builtin;
215pub use vector::vector_to_list_builtin;
216
217// Record operations
218pub use record::construct_record_builtin;
219pub use record::get_record_field_builtin;
220pub use record::is_record_type_builtin;
221pub use record::make_record_type_builtin;
222pub use record::record_type_of_builtin;
223pub use record::set_record_field_builtin;
224
225// Time operations
226pub use now::now_builtin;
227
228// Meta operations
229pub use def::def_builtin;
230pub use doc::doc_builtin;
231pub use help::help_builtin;
232pub use val::val_builtin;
233
234// Variable operations (Forth-style)
235pub use var::var_builtin;
236pub use fetch::fetch_builtin;
237pub use store::store_builtin;
238
239// Local variables (lexically scoped)
240pub use lval::lval_builtin;
241pub use lvar::lvar_builtin;
242
243// Control flow - if is now handled specially in the evaluator
244
245// I/O operations
246pub use print::print_builtin;
247pub use words::words_builtin;
248pub use cr::cr_builtin;
249pub use space::space_builtin;
250
251// Stack management
252pub use clear::clear_builtin;
253pub use stack::stack_builtin;
254
255// String operations
256pub use to_string::to_string_builtin;
257
258// Predicate operations
259pub use null::null_predicate_builtin;
260pub use truthy::truthy_predicate_builtin;
261
262// Type introspection
263pub use type_of::type_of_builtin;
264
265// I16 buffer operations
266pub use i16_buffer::i16_buffer_builtin;
267pub use i16_dsp::{i16_avg_builtin, i16_max_builtin, i16_min_builtin};
268pub use i16_ops::{i16_length_builtin, i16_pop_builtin, i16_push_builtin};
269pub use i16_ref::i16_ref_builtin;
270pub use i16_set::i16_set_builtin;
271
272// RUST CONCEPT: Module-level documentation
273// This explains the organization strategy for the primitives