mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-29 20:34:44 +00:00
49 lines
1.4 KiB
Rust
49 lines
1.4 KiB
Rust
use erg_common::set;
|
|
use erg_common::vis::Visibility;
|
|
|
|
use crate::ty::constructors::{
|
|
kw, mono, mono_q, nd_proc, poly, proc, quant, static_instance, ty_tp,
|
|
};
|
|
use crate::ty::Type;
|
|
use Type::*;
|
|
|
|
use crate::context::Context;
|
|
use crate::varinfo::Mutability;
|
|
use Mutability::*;
|
|
use Visibility::*;
|
|
|
|
impl Context {
|
|
pub(crate) fn init_py_random_mod() -> Self {
|
|
let mut random = Context::builtin_module("random", 10);
|
|
random.register_builtin_py_impl(
|
|
"seed!",
|
|
proc(
|
|
vec![],
|
|
None,
|
|
vec![
|
|
kw("a", mono("Num")), // TODO: NoneType, int, float, str, bytes, bytearray
|
|
kw("version", Int),
|
|
],
|
|
NoneType,
|
|
),
|
|
Immutable,
|
|
Public,
|
|
Some("seed"),
|
|
);
|
|
random.register_builtin_py_impl(
|
|
"randint!",
|
|
nd_proc(vec![kw("a", Int), kw("b", Int)], None, Int),
|
|
Immutable,
|
|
Public,
|
|
Some("randint"),
|
|
);
|
|
let t = nd_proc(
|
|
vec![kw("seq", poly("Seq", vec![ty_tp(mono_q("T"))]))],
|
|
None,
|
|
mono_q("T"),
|
|
);
|
|
let t = quant(t, set! {static_instance("T", Type)});
|
|
random.register_builtin_py_impl("choice!", t, Immutable, Public, Some("choice"));
|
|
random
|
|
}
|
|
}
|