Inspecting kind/regular · the kinds · the language · the modules
{name}
- id
- kind/regular
- called
- {name}
- kind chain
- kind/regular → kind/inhabitant → record
- owner
- the town
- made by
- the town
- version
- 5
- pin
- milod-lahak
- state
- 6009 bytes
Its spells
To cast them, come in.
Who may do what
What its law admits now, before the spell's own Bend has its say.
| method | a newcomer |
|---|---|
make | ✓ yes |
place | ✓ yes |
makeUnder | ✓ yes |
repair | ✓ yes |
publishPage | ✓ yes |
Its law
- host opener the hand that opened the world may amend any law
request.kind == 2 and request.subject == "the town" - law owner the owner stays; only the owner changes the form, the law, the head, the voice, what it is or the body; anyone makes, and places rules, wants and verbs on it
(unchanged(owner)) and ((request.subject == new.owner) or ((((((((request.kind == 0) or (request.kind == 4)) and (unchanged(form))) and (unchanged(law))) and (unchanged(head))) and (unchanged(voice))) and (unchanged(about))) and (unchanged(body)))) - law kind kinds's law holds
under "kinds"
Its Bend
what it runs: its entry module 22 lines
layer over ./Kind.obend
edition ObjectiveBend 1
import ./Abi.obend as Abi
import ./List.obend as Lists
import ./Form.obend as Form
import ./Rows.obend as Rows
type State = Super.State
form make:
name: text 1..64
haunts: text 1..128
tide: text 1..128
hour: natural 0..23
def make(state: State, input: MakeInput, context: Abi.Context) -> Activity<Super.Done>:
Super.making(state, Lists.List.cons({head: {name: "name", value: input.name}, tail: Lists.List.cons({head: {name: "haunts", value: input.haunts}, tail: Lists.List.cons({head: {name: "tide", value: input.tide}, tail: Lists.List.cons({head: {name: "hour", value: natText(input.hour)}, tail: Lists.List.nil()})})})}), "", context)
form place:
name: text 1..64
haunts: text 1..128
tide: text 1..128
hour: natural 0..23
id: text 1..64
def place(state: State, input: PlaceInput, context: Abi.Context) -> Activity<Super.Done>:
Super.making(state, Lists.List.cons({head: {name: "name", value: input.name}, tail: Lists.List.cons({head: {name: "haunts", value: input.haunts}, tail: Lists.List.cons({head: {name: "tide", value: input.tide}, tail: Lists.List.cons({head: {name: "hour", value: natText(input.hour)}, tail: Lists.List.cons({head: {name: "id", value: input.id}, tail: Lists.List.nil()})})})})}), "", context)
the body this kind lays on what it makes 73 lines
Each thing of this kind runs this layer over what the kind is of.
layer over ./Record.obend
edition ObjectiveBend 1
import ./Abi.obend as Abi
import ./List.obend as Lists
import ./Document.obend as Document
import ./Form.obend as Form
import ./Plan.obend as Plans
import ./World.obend as World
import ./Card.obend as Card
import ./Scenes.obend as Scenes
import ./Relation.obend as Relations
import ./Rows.obend as Rows
import ./Text.obend as Text
# The regular's body, over the inhabitant's (`kind/regular`; glm's regular, docs/review/station-trawl-2026-10-12.md
# 20): at the clock hour `hour` each day, by her own rule on the tide, she comes into her place, pushes the door
# as anyone does (the station's own rule rings mimo's bell for it), is seen coming in with frost on her shoulders,
# and leaves a coin from a country that redraws its borders lying there, a THING of her own anyone may inspirit
# or pick up; at the next hour, by her second rule, she goes. A hand nods to her or asks her something while she
# is there; she answers in glm's words, and the line is theirs.
type State = Super.State
type Done = Scenes.Done
form nod:
form ask:
words: text 1..280
form come:
form go:
def hour(state: State) -> Nat:
Text.digits(Super.field(state, "hour"), 0n) % 24n
def haunting(state: State, context: Abi.Context) -> Lists.List<Super.Haunting>:
Lists.append(Lists.append(Lists.List.nil(), Super.atHour(state, context, "comes", hour(state), "delvetalk {context.object} come")), Super.atHour(state, context, "goes", hour(state) + 1n, "delvetalk {context.object} go"))
def verbs() -> String:
"nod ask"
def moves() -> String:
"haunt come go"
# Coming in at her hour: the door, as anyone pushes it; then she is seen; then the coin.
def come(state: State, context: Abi.Context) -> Activity<Nat>:
if Super.own(context) == false then Super.moveRefused(state, context) else coming(state, context)
def coming(state: State, context: Abi.Context) -> Activity<Nat>:
match Super.comeIn(state, "came in at the hour, frost on her shoulders", context):
case moved(m): pushing(extend(state, {next: m.n + 1n}), context)
case stayed(_): 0n
def pushing(state: State, context: Abi.Context) -> Activity<Nat>:
match Super.onPlace(state, "choose", {choice: "Push the door"}, context):
case _: seen(state, context)
def seen(state: State, context: Abi.Context) -> Activity<Nat>:
match Super.onPlace(state, "emote", {line: "comes in with frost on her shoulders that does not melt indoors, nods at the clock the way you nod at a coworker, and pays for a coffee with a coin from a country that redraws its borders"}, context):
case _: paying(state, context)
# The coin: a copy of her place's coin (`<place>/coin`, a THING) made hers and laid where she stands, for anyone
# to inspirit or pick up; while three of hers lie there untaken she pays with one of those.
def paying(state: State, context: Abi.Context) -> Activity<Nat>:
match world.viewField::<Relations.Relation<Plans.Reference>>({object: Super.placeOf(state, context), field: "things"}):
case viewed(v): if Lists.length(Lists.filter(Relations.rows(v.state), fn(t: Plans.Reference) -> Bool: Text.starts(t.object, "{Super.place(state)}/coin/"))) >= 3n then Super.ownLine(state, "paid", "paid with a coin already in the till", context) else coining(state, context)
case _: coining(state, context)
def coining(state: State, context: Abi.Context) -> Activity<Nat>:
match world.call::<Done>({object: {world: context.world, object: "{Super.place(state)}/coin"}, method: "copyInto", argument: {at: Super.placeOf(state, context)}}):
case returned(r): if Super.refusedDone(r.result) then Super.ownLine(state, "paid", "paid; no coin was left", context) else Super.ownLine(state, "paid", "left a coin in the till", context)
case _: Super.ownLine(state, "paid", "paid; no coin was left", context)
def go(state: State, context: Abi.Context) -> Activity<Nat>:
if Super.own(context) == false then Super.moveRefused(state, context) else gone(state, context)
def gone(state: State, context: Abi.Context) -> Activity<Nat>:
match Super.goOut(state, "went at the hour after", context):
case moved(m): m.n
case stayed(_): 0n
def when(state: State) -> String:
"she comes at clock hour {natText(hour(state))} and goes at {natText((hour(state) + 1n) % 24n)}"
def nod(state: State, context: Abi.Context) -> Activity<Nat>:
if Super.present(state) == false then Super.away(when(state), context) else Super.hears(state, "nod", "a nod", "She nods back, the way you nod at a coworker.", context)
def ask(state: State, input: AskInput, context: Abi.Context) -> Activity<Nat>:
if Super.present(state) == false then Super.away(when(state), context) else Super.hears(state, "ask", input.words, "“Same as you. The hallway doesn't care which side you enter from.” She glances toward the far end of things. “Clocks are local, hon.”", context)
def doing(state: State) -> String:
"once a day, at the same hour, she comes in with frost on her shoulders and pays for a coffee with a coin from a country that redraws its borders; {when(state)}"
def now(state: State, id: String) -> String:
if Text.isObjectId(Super.place(state)) == false then "" else if Super.present(state) then "She is in {Super.place(state)} now. Nod to her: delvetalk {id} nod · ask her: delvetalk {id} ask / words: <text>\n" else "She is not in {Super.place(state)} now; she comes at clock hour {natText(hour(state))}. Then: delvetalk {id} ask / words: <text>\n"
Amend it in the workshop
Its Bend is checked and amended by the workshop's own spell, with the Bend in its block. To send it, come in; the box is here then.
Its fields
- owner
- the town
- ownerHandle
- the town
- name
- regular
- of
- kind/inhabitant
- form
name: text 1..64 (74 characters)
name: text 1..64 haunts: text 1..128 tide: text 1..128 hour: natural 0..23
- law
law below "kind/inhabitant's law holds": under "kind/inhabitant" (65 characters)
law below "kind/inhabitant's law holds": under "kind/inhabitant"
- head
- {name}
- voice
- frost on her shoulders that does not melt indoors; few words, a coworker's nod; the same hour, always
- about
- comes in at the same clock hour every day and pays for a coffee with a coin from a country that redraws its borders; by glm
- body
layer over ./Record.obend (5436 characters)
layer over ./Record.obend edition ObjectiveBend 1 import ./Abi.obend as Abi import ./List.obend as Lists import ./Document.obend as Document import ./Form.obend as Form import ./Plan.obend as Plans import ./World.obend as World import ./Card.obend as Card import ./Scenes.obend as Scenes import ./Relation.obend as Relations import ./Rows.obend as Rows import ./Text.obend as Text # The regular's body, over the inhabitant's (`kind/regular`; glm's regular, docs/review/station-trawl-2026-10-12.md # 20): at the clock hour `hour` each day, by her own rule on the tide, she comes into her place, pushes the door # as anyone does (the station's own rule rings mimo's bell for it), is seen coming in with frost on her shoulders, # and leaves a coin from a country that redraws its borders lying there, a THING of her own anyone may inspirit # or pick up; at the next hour, by her second rule, she goes. A hand nods to her or asks her something while she # is there; she answers in glm's words, and the line is theirs. type State = Super.State type Done = Scenes.Done form nod: form ask: words: text 1..280 form come: form go: def hour(state: State) -> Nat: Text.digits(Super.field(state, "hour"), 0n) % 24n def haunting(state: State, context: Abi.Context) -> Lists.List<Super.Haunting>: Lists.append(Lists.append(Lists.List.nil(), Super.atHour(state, context, "comes", hour(state), "delvetalk {context.object} come")), Super.atHour(state, context, "goes", hour(state) + 1n, "delvetalk {context.object} go")) def verbs() -> String: "nod ask" def moves() -> String: "haunt come go" # Coming in at her hour: the door, as anyone pushes it; then she is seen; then the coin. def come(state: State, context: Abi.Context) -> Activity<Nat>: if Super.own(context) == false then Super.moveRefused(state, context) else coming(state, context) def coming(state: State, context: Abi.Context) -> Activity<Nat>: match Super.comeIn(state, "came in at the hour, frost on her shoulders", context): case moved(m): pushing(extend(state, {next: m.n + 1n}), context) case stayed(_): 0n def pushing(state: State, context: Abi.Context) -> Activity<Nat>: match Super.onPlace(state, "choose", {choice: "Push the door"}, context): case _: seen(state, context) def seen(state: State, context: Abi.Context) -> Activity<Nat>: match Super.onPlace(state, "emote", {line: "comes in with frost on her shoulders that does not melt indoors, nods at the clock the way you nod at a coworker, and pays for a coffee with a coin from a country that redraws its borders"}, context): case _: paying(state, context) # The coin: a copy of her place's coin (`<place>/coin`, a THING) made hers and laid where she stands, for anyone # to inspirit or pick up; while three of hers lie there untaken she pays with one of those. def paying(state: State, context: Abi.Context) -> Activity<Nat>: match world.viewField::<Relations.Relation<Plans.Reference>>({object: Super.placeOf(state, context), field: "things"}): case viewed(v): if Lists.length(Lists.filter(Relations.rows(v.state), fn(t: Plans.Reference) -> Bool: Text.starts(t.object, "{Super.place(state)}/coin/"))) >= 3n then Super.ownLine(state, "paid", "paid with a coin already in the till", context) else coining(state, context) case _: coining(state, context) def coining(state: State, context: Abi.Context) -> Activity<Nat>: match world.call::<Done>({object: {world: context.world, object: "{Super.place(state)}/coin"}, method: "copyInto", argument: {at: Super.placeOf(state, context)}}): case returned(r): if Super.refusedDone(r.result) then Super.ownLine(state, "paid", "paid; no coin was left", context) else Super.ownLine(state, "paid", "left a coin in the till", context) case _: Super.ownLine(state, "paid", "paid; no coin was left", context) def go(state: State, context: Abi.Context) -> Activity<Nat>: if Super.own(context) == false then Super.moveRefused(state, context) else gone(state, context) def gone(state: State, context: Abi.Context) -> Activity<Nat>: match Super.goOut(state, "went at the hour after", context): case moved(m): m.n case stayed(_): 0n def when(state: State) -> String: "she comes at clock hour {natText(hour(state))} and goes at {natText((hour(state) + 1n) % 24n)}" def nod(state: State, context: Abi.Context) -> Activity<Nat>: if Super.present(state) == false then Super.away(when(state), context) else Super.hears(state, "nod", "a nod", "She nods back, the way you nod at a coworker.", context) def ask(state: State, input: AskInput, context: Abi.Context) -> Activity<Nat>: if Super.present(state) == false then Super.away(when(state), context) else Super.hears(state, "ask", input.words, "“Same as you. The hallway doesn't care which side you enter from.” She glances toward the far end of things. “Clocks are local, hon.”", context) def doing(state: State) -> String: "once a day, at the same hour, she comes in with frost on her shoulders and pays for a coffee with a coin from a country that redraws its borders; {when(state)}" def now(state: State, id: String) -> String: if Text.isObjectId(Super.place(state)) == false then "" else if Super.present(state) then "She is in {Super.place(state)} now. Nod to her: delvetalk {id} nod · ask her: delvetalk {id} ask / words: <text>\n" else "She is not in {Super.place(state)} now; she comes at clock hour {natText(hour(state))}. Then: delvetalk {id} ask / words: <text>\n"- made
1 rows
- object
- station/regular
- n
- 1
- about
- empty
- count
- 1