Anecdotal...

Racket is a powerful general-purpose algorithmic language, including a bunch of great facilities for mini-languages, plus some standard libraries (like "racket/class") that support different ``paradigms''.

Early in my career, I did a lot of industry R&D work on methodology and CASE for OO analysis/design/programming, as well as a lot of practical work using those same methods and tools. So it was surprising to me to find myself no longer using even an OOPL nor always decomposing the world into a class-instance object model.

Nowadays, doing most of my development in Racket, I never use Racket's OO library, but instead pick&choose conceptual constructions from various different ``paradigms'', and implement them using basic Racket features. For example, in the code I am working on in another window -- which generates a startup's Web site -- I think of the pages as objects, but actually implement them using Racket "struct"s, and populated via a minilanguage, with all the metadata and content embedded in the Racket source file. The code is in a functional-esque style, with almost no mutations, but I am also conscious of the algorithmic evaluation model. The bodies of the pages -- separate from the metadata and stock parts -- is marked up in a minilanguage that is s-expressions that is SXML with some non-SXML bits added to it: shorthands for things like referring to particular pages by ID, and special URI objects (absolute URI that are automatically translated to minimal URI relative to the URI of the page in which they are referenced). The site has a programmatically-generated navigation bar that works in a desired way that off-the-shelf ones probably couldn't do. This is a small program, and I just banged it out quickly to suit the task, not spent weeks on it. It sure beats using some big ``enterprise framework'' that wants things done in a bloated and bureaucratic manner yet doesn't really do what I want.

Neil V.

____________________
 Racket Users list:
 http://lists.racket-lang.org/users

Reply via email to