Pattern Matching
ThinkLang's match expression lets you branch on the shape and values of data, which is especially useful for handling AI results with varying confidence levels or categories.
Syntax
thinklang
match subject {
pattern => result
pattern => result
_ => default_result
}Object Patterns
Match on object fields with comparison operators:
thinklang
let sentiment = think<Confident<Sentiment>>("Analyze sentiment") with context: review
let response = match sentiment {
{ confidence: >= 0.9 } => "High confidence result"
{ confidence: >= 0.5 } => "Moderate confidence result"
_ => "Low confidence — manual review needed"
}
print responseSupported comparison operators: >=, <=, ==, !=.
Literal Patterns
Match against exact values:
thinklang
let category = infer<string>(message, "Classify as info, warning, or error")
let icon = match category {
"error" => "[ERROR]"
"warning" => "[WARN]"
"info" => "[INFO]"
_ => "[?]"
}
print iconMultiple Field Patterns
Match on several fields at once:
thinklang
type Analysis {
risk: string
score: float
}
let action = match analysis {
{ risk: "high", score: >= 0.8 } => "Immediate action required"
{ risk: "medium" } => "Monitor closely"
{ risk: "low" } => "No action needed"
_ => "Unclassified"
}All field conditions in a pattern must be satisfied for the arm to match.
Wildcard
The _ pattern matches anything. Place it last as a catch-all:
thinklang
let result = match value {
{ status: "ok" } => "Success"
_ => "Something else"
}Match is an Expression
match returns a value, so you can assign its result to a variable or use it inline:
thinklang
let label = match score {
{ value: >= 90 } => "A"
{ value: >= 80 } => "B"
{ value: >= 70 } => "C"
_ => "F"
}
print label