Well, they???re just functions. ???int??? and ???stateless??? are language-builtin functions that return true if their arguments are an int, or a provably stateless function, respectively. (For purposes of a type function, if the type *doesn???t* match, then either a runtime failure or a return false are okay.) Types are values, so you can construct new ones by combining them.