Records and Structs
Records are the default named-field type; structs are small primitive value types.
Named Fields
Use dot access such as player.points to read a named field.
fields.brp
record Player { name: String, score: Int }
player.scoreRecord Literals
Record literals name every field with field = value.
record-literal.brp
player: Player = { name = "Ada", score = 91 }Record Update
{ old | field = value } returns a new record value.
record-update.brp
next: Player = { player | score = player.score + 1 }Structs As Value Types
Structs are stack value types for small fixed data with primitive fields.
struct.brp
struct Point { x: Float, y: Float }
p: Point = { x = 1.0, y = 2.0 }Example
player.brp
record Player {name: String, points: Int}
struct Delta {points: Int}
pure func award(player: Player, event: Delta) -> Player:
{ player | points = player.points + event.points }
func main(args: List[String]) -> Void:
start: Player = {name = "Ada", points = 10}
updated: Player = award(start, {points = 5})
print(start.points.to_string())
print(updated.points.to_string())
Try It
terminal
blorp run player.brp