Build an Exhaustive String|Integer Labeler in Ceylon
Make every String|Integer variant explicit in Ceylon so the compiler catches missing branches before runtime.
ReadMeFeed / Community knowledge
Real questions. Useful conversations. Find the people who know your stack.
Make every String|Integer variant explicit in Ceylon so the compiler catches missing branches before runtime.
Decide when to split Ceylon code into multiple modules, compare build and version trade-offs, and compile a two-module example with module.ceylon.
Ceylon's union and intersection types enable precise modeling of heterogeneous data on the JVM while maintaining static type safety and exhaustive pattern matching.
Learn how Ceylon’s module system lets you expose only the API you choose, hide internal code, and keep dependencies from colliding across teams.
Learn how Ceylon’s module system lets you lock in exact dependency versions, control transitive imports, and package modules as JARs for Maven. A step‑by‑step example shows module creation, version ranges, and practical trade‑offs for reproducible builds.
Ceylon modules make dependencies first-class with named, versioned descriptors and compile-time version range resolution, turning classpath drift into a build-time error.
Ceylon’s `of` clause creates closed variant sets and its exhaustive `switch` turns adding a new case into a compiler-guided refactor instead of a code-review gamble.
Ceylon removes Java's wildcard boilerplate with declaration-site variance and type inference, but JVM erasure means bridge methods and hidden casts remain. Here is how to verify the tradeoff before adopting it.
A task guide to declaring a Ceylon module descriptor, resolving dependencies, compiling, running, and packaging a self-contained JVM archive with the Ceylon CLI.