program main
  fn join(left: string, right: string) -> string
    call std.string.concat : string
      var left : string
      var right : string
  fn greeting() -> string
    call std.string.concat : string
      string "hello, " : string
      string "slovo" : string
  fn greeting_len() -> i32
    call std.string.len : i32
      call greeting : string
  fn main() -> i32
    call std.io.print_string : unit
      call join : string
        string "hello, " : string
        string "slovo" : string
    call std.io.print_i32 : unit
      call std.string.len : i32
        call join : string
          string "ab" : string
          string "cd" : string
    int 0 : i32
  test "owned string concat equality"
    binary = : bool
      call greeting : string
      string "hello, slovo" : string
  test "owned string concat length"
    binary = : bool
      call greeting_len : i32
      int 12 : i32
