# List, Map, Struct and alias

Next to the basic types, there are the normal things that we can expect from scripting languages. As colm is static and strong typed, it is very convenient to use alias as well.

An example is probably much clearer then 1000 loc.

poker.md

    alias Value_t map<int,str>
    values:Value_t = new Value_t()

    values->insert(0, "Ace")
    values->insert(1, "1")
    values->insert(2, "2")
    values->insert(3, "3")
    values->insert(4, "4")
    values->insert(5, "5")
    values->insert(6, "6")
    values->insert(7, "7")
    values->insert(8, "8")
    values->insert(9, "9")
    values->insert(10, "Ten")
    values->insert(11, "Jack")
    values->insert(12, "Queen")
    values->insert(13, "King")

    alias Suit_t map<int,str>
    suit:Suit_t = new Suit_t()
    suit->insert(1, "hearts")
    suit->insert(2, "spades")
    suit->insert(3, "diamonds")
    suit->insert(4, "clubs")

    struct Card_t
        s:int
        v:int
    end

    alias Hand_t list<Card_t>

    struct Person_t
        name:str
        age:int
        hand:Hand_t
    end

    john:Person_t

    john = new Person_t()
    john->name = "john"
    john->age = 18
    john->hand = new Hand_t()

    card:Card_t = new Card_t()
    card->s = 2
    card->v = 13
    john->hand->push(card)

    print("ok ", john->name, " ", john->age, "\n")
    for card:Card_t in john->hand {
        print("\n\t", suit->find(card->s), " ", values->find(card->v), "\n")
    }

When we run this we get:

    ok john 18

            spades King

| this also illustrates how to iterate through a list and access elements in a map.