Розробімо просту предметно-орієнтовану мову (DSL) для кидання кубиків. Гравці в такі ігри, як Dungeons & Dragons, добре знайомі з такою DSL. Ось приклад такого виразу: 2 D20 + 1 D6, який означає, що нам треба кинути два 20-гранні кубики й один 6-гранний кубик.
Вираз 2 d20 + 3 d10 можна реалізувати за допомогою синтаксису Pharo. + працює так само, як будь-який інший метод, і його можна реалізувати в класах, відмінних від чисел. Такі методи, як d20, можна реалізувати в наявному класі Integer за допомогою розширень класу, тобто методу в іншому пакеті, ніж той, у якому перебуває сам клас.
Цю вправу взято з книжки «Learning Object-Oriented Programming, Design and TDD with Pharo», доступної на http://books.pharo.org. Розділ 12: Crafting a simple embedded DSL with Pharo.