Prose
Prose is a small language for describing systems as a field guide.
It names what exists, describes it in plain language, and shows how things relate. It does not execute or enforce behavior. It simply makes a world visible.
Below is a complete universe. You can read it top to bottom.
A universe
universe ClockworkVillage {
describe {
A quiet village where time passes only when you act.
}
dimension timeOfDay {
describe {
A day is separated by distinct times.
}
relationship follows and isFollowedBy {
describe {
Times of day move forward in sequence.
}
}
}
timeOfDay Morning { }
timeOfDay Afternoon { }
timeOfDay Evening { }
timeOfDay Night { }
concept Chicken {
describe {
Chickens wander the village and lay eggs.
}
}
concept ChickenCoop {
describe {
A small wooden structure where chickens sleep at night.
}
}
concept Fox {
describe {
Foxes are quiet predators that hunt when the village is dark.
}
}
relationship canOccurDuring and canBeWhile { }
relationship canOccurWhere and canBeWhere { }
relationship canOccurWith and canParticipateIn { }
concept ChickenRaid {
describe {
A fox enters a chicken coop and eats the chickens inside.
}
relationships {
canOccurDuring {
timeOfDay.Evening
timeOfDay.Night
}
canOccurWhere { ChickenCoop }
canOccurWith { Fox }
}
}
} A universe describes a world.
It names things. It describes them. It shows how they relate.
Describe
describe {
A small wooden structure where chickens sleep at night.
} Everything can be described.
Descriptions are the meaning of the world.
Concept
concept Chicken { } A concept names something that exists.
Concepts can be nested.
concept Well {
concept Rope { }
} Dimension
dimension timeOfDay { }
timeOfDay Evening { }
timeOfDay Night { } A dimension groups related concepts.
Dimensions are lowercase. Concepts are named.
Relationship
relationship follows and isFollowedBy { } A relationship can be used to describe how things connect.
Relationships
relationships {
occursAt { Well }
occursWith { Fox }
} Relationships describe how something connects to others.
You only need to declare one side. The other is always available.
Scope
relationships {
occursAt { Well }
} Names resolve locally first.
If not found, prose looks upward.
You can always be explicit:
occursAt { ClockworkVillage.Well } Relates
relates Fox and ChickenCoop {
relationships {
avoids { ChickenCoop }
}
} A relates block describes how two concepts connect.
What prose is
Prose is a field guide.
It describes a world. It does not run it.
Continue
Prose describes a world. Sprig shows how systems respond to it.