sim_lib_sequence/
claims.rs1use sim_kernel::{
2 Cx, LibId, OpKey, Result, Symbol,
3 standard::{publish_organ_claims, publish_organ_claims_for_lib},
4};
5
6pub fn sequence_organ_symbol() -> Symbol {
11 Symbol::qualified("organ", "sequence")
12}
13
14pub fn sequence_persistent_op_key() -> OpKey {
16 sequence_op_key("persistent")
17}
18
19pub fn sequence_lazy_op_key() -> OpKey {
21 sequence_op_key("lazy")
22}
23
24pub fn sequence_map_op_key() -> OpKey {
26 sequence_op_key("map")
27}
28
29pub fn sequence_filter_op_key() -> OpKey {
31 sequence_op_key("filter")
32}
33
34pub fn sequence_reduce_op_key() -> OpKey {
36 sequence_op_key("reduce")
37}
38
39pub fn sequence_for_op_key() -> OpKey {
41 sequence_op_key("for")
42}
43
44pub fn sequence_transduce_op_key() -> OpKey {
46 sequence_op_key("transduce")
47}
48
49pub fn sequence_op_keys() -> Vec<OpKey> {
54 [
55 sequence_persistent_op_key(),
56 sequence_lazy_op_key(),
57 sequence_map_op_key(),
58 sequence_filter_op_key(),
59 sequence_reduce_op_key(),
60 sequence_for_op_key(),
61 sequence_transduce_op_key(),
62 ]
63 .into()
64}
65
66pub fn publish_sequence_organ_claims(cx: &mut Cx) -> Result<()> {
72 publish_organ_claims(cx, sequence_organ_symbol(), sequence_op_keys())
73}
74
75pub fn publish_sequence_organ_claims_for_lib(cx: &mut Cx, lib_id: LibId) -> Result<()> {
77 publish_organ_claims_for_lib(cx, lib_id, sequence_organ_symbol(), sequence_op_keys())
78}
79
80fn sequence_op_key(name: &str) -> OpKey {
81 OpKey::new(Symbol::new("sequence"), Symbol::new(name), 1)
82}