In the terminology of SML an identifier is bound to some definition.
If you haven't defined the identifier in an expression you will get
a complaint about an unbound variable. If the identifier is in a
binding pattern then you might have intended it to be a constructor
from a datatype. Here are some examples.
fun f cmd =
(
case cmd of
[] => ""
| (first::rest) => TxtIO.print frst
) |
ubnd1.sml:5.24-5.35 Error: unbound structure: TxtIO in path TxtIO.print
ubnd1.sml:5.24-5.28 Error: unbound variable or constructor: frst |