PreviousUpNext

Red-Black Trees: Int Keys

If we want to use Int rather than String keys we need to switch to a different tree variant, but things otherwise work just the same. Here we use the int_red_black_map tree variant. Since that is a long name, we define the short synonym map for it within the script:

    #!/usr/bin/mythryl

    package map = int_red_black_map;

    m = (map::empty: map::Map( String ));

    m = map::set (m, 111, "Value1");
    m = map::set (m, 222, "Value2");
    m = map::set (m, 333, "Value3");

    printf "%d -> %s\n"  111  (the (map::get (m, 111)) );
    printf "%d -> %s\n"  222  (the (map::get (m, 222)) );
    printf "%d -> %s\n"  333  (the (map::get (m, 333)) );

Here is the execution:

    linux$ ./my-script
    111 -> Value1
    222 -> Value2
    333 -> Value3

Same script rewritten to use Int values:

    #!/usr/bin/mythryl

    package map = int_red_black_map;

    m = (map::empty: map::Map( Int ));

    m = map::set (m, 111, 1111);
    m = map::set (m, 222, 2222);
    m = map::set (m, 333, 3333);

    printf "%d -> %d\n"  111  (the (map::get (m, 111)) );
    printf "%d -> %d\n"  222  (the (map::get (m, 222)) );
    printf "%d -> %d\n"  333  (the (map::get (m, 333)) );

The run:

    linux$ ./my-script
    111 -> 1111
    222 -> 2222
    333 -> 3333

And now with float values:

    #!/usr/bin/mythryl

    package map = int_red_black_map;

    m = (map::empty: map::Map( Float ));

    m = map::set (m, 111, 0.111);
    m = map::set (m, 222, 0.222);
    m = map::set (m, 333, 0.333);

    printf "%d -> %f\n"  111  (the (map::get (m, 111)) );
    printf "%d -> %f\n"  222  (the (map::get (m, 222)) );
    printf "%d -> %f\n"  333  (the (map::get (m, 333)) );

The run:

    linux$ ./my-script
    111 -> 0.111000
    222 -> 0.222000
    333 -> 0.333000

Comments and suggestions to: bugs@mythryl.org

PreviousUpNext