Core DataRecords and Structs
Blorp by Example

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.score

Record 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