Skip to content
LogoLogo

VIP-10: the Users.find(id) shorthand (denied)

Status: denied by Will, 2026-10-28. There is no shorthand: get the service, then call it.

const users = try Users
const user = try users.find(id)
// or
const user = try (try Users).find(id)
 
// Effect TS
const user = yield* (yield* Users).find(id)

What was proposed

try Users.find(id) would look up Users, call find and run the result. It was allowed only for members that return an Effect (D552). Prior art: Effect 3's accessors: true.

Why it was denied

It is ambiguous. Class statics collide with member names: for a service with a member name(), Users.name could be Function.name or the shorthand. The same holds for key, length, prototype, defaultValue and Shape. A rule could have banned those member names; the shorthand saves too little to justify one.

History

ProblemKindStatus
It ran a member's returned program by its declared type (round 10, major)legofixed by D552, now moot
It looked up Users before evaluating the arguments (round 10)localfixed by D552, now moot

Will's words

"I think we can safely deny this one"

Footnote: old VibeLang

Old VibeLang is a reference only; nothing in it is part of the language unless a VIP adds it. For implementers, this VIP replaces:

D552's service shorthand and EK4503. Implementation: the shorthand is removed, and vibelang --fix rewrites S.m(args) to (try S).m(args).