# Exercise: Understanding Types
#
# Seq is statically typed - the compiler checks types at compile time.
# Each operation works with specific types:
#
#   i.+ expects two Int values
#   f.+ expects two Float values
#   string.concat expects two String values
#
# The compiler ensures type safety. You don't need runtime type checks
# because the compiler catches type errors before your code runs.
#
# Your task: Understand that different operations require different types
# When done, delete the marker line below.

# I AM NOT DONE

: add-integers ( Int Int -- Int )
    # Add two integers using i.+
    i.+
;

: test-int-type ( -- )
    10 20 add-integers
    # Do not edit below this line
    30 test.assert-eq
;

: add-floats ( Float Float -- Float )
    # Add the two floats together.
    # Your code here - replace drop drop with correct code.
    drop drop 0.0
;

: test-float-type ( -- )
    1.5 2.5 add-floats
    # Do not edit below this line
    4.0 f.= test.assert
;

: concat-strings ( String String -- String )
    # Concatenate two strings
    # Your code here
    drop drop ""
;

: test-string-type ( -- )
    "Hello, " "World!" concat-strings
    # Do not edit below this line
    "Hello, World!" string.equal? test.assert
;
