mux-lang 0.4.1

The Mux Programming Language Compiler
import std.dsa.collection.Collection

class Stack<T> is Collection<T> {
    list<T> items

    func len() returns int {
        return self.items.size()
    }

    func is_empty() returns bool {
        return self.items.is_empty()
    }

    func clear() returns void {
        while !self.items.is_empty() {
            self.items.pop_back()
        }
    
        return
    }

    func to_list() returns list<T> {
        return self.items
    }

    func push(T value) returns void {
        self.items.push_back(value)
    
        return
    }

    func pop() returns optional<T> {
        return self.items.pop_back()
    }

    func peek() returns optional<T> {
        if self.items.is_empty() {
            return none
        }
        return self.items.get(self.items.size() - 1)
    }

    func contains(T value) returns bool {
        int i = 0
        while i < self.items.size() {
            if self.items[i] == value {
                return true
            }
            i = i + 1
        }
        return false
    }

    common func from_list(list<T> values) returns Stack<T> {
        auto out = Stack<T>.new()
        out.items = values
        return out
    }
    }