Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 30 Oct 2026. What's built · Install 0.1.0
jadpo
Reference: Standard library

Standard library · rule

type.money_split

Money is divided by a count.

Area 19, Standard library; not declinable; the next step is usually the agent's.

Money divided by a count: / by an Int. Dividing money by a count is sharing it out, and rounding each share loses a minor unit; money.split hands every one to some share, and money.allocate shares in proportion. / by a Decimal stays, since that is a rate (/ 1.20 takes VAT off).

example
type BillTotal = Money {    currency: Currency.gbp    min: 0}/// One friend's share of a bill split three ways.function share(total: BillTotal) -> BillTotal {    return BillTotal(total / 3)}
text
error: `BillTotal` is divided by a count --> main.jadpo:8:22  |8 |     return BillTotal(total / 3)  |                      ^^^^^^^^^ money shared out by `/`  reason: Dividing money by a count is sharing it out, and rounding each share loses minor units: £10.00 / 3 is £3.33, three times £9.99. `money.split` hands every minor unit to some share, and `/` takes only a `Decimal` rate, as `/ 1.20` takes a 20% tax off; `3` is a whole number.  next: Share it with `money.split(total, 3)`, which gives a list of shares adding up to the total, or `money.allocate` for unequal shares; halve an amount with `* 0.5` (agent)  rule: type.money_split  help: https://jadpo.dev/docs/errors/type.money_splitcheck failed: 1 error, 1 file

Two amounts in currencies both types fix differently don't compile, by area 3's type.arithmetic_operand (and type.ordering_operand for <):

example
type CakePrice = Money {    currency: Currency.gbp}type EuroPrice = Money {    currency: Currency.eur}/// A cake priced in pounds, delivered from a shop that charges in euros.function delivered(price: CakePrice, delivery: EuroPrice) -> CakePrice {    return CakePrice(price + delivery)}
text
error: `CakePrice` and `EuroPrice` can't be added: they're in different currencies --> main.jadpo:11:22   |11 |     return CakePrice(price + delivery)   |                      ^^^^^^^^^^^^^^^^ GBP and EUR  reason: `CakePrice` is in GBP and `EuroPrice` in EUR, as their types or the calls that made them fix; amounts are added only in one currency.  next: Use two amounts in the same currency (agent)  rule: type.arithmetic_operand  help: https://jadpo.dev/docs/errors/type.arithmetic_operandcheck failed: 1 error, 1 file

Markdown for agents: /docs/errors/type.money_split.md.Built from Jadpo main at a707efb.