Lucee language compared to Clojure with FW/1 framework

The FW/1 framework includes the option of programming in the functional language Clojure which is similar in syntax to LISP. Its certainly a powerful language but Lucee dialect includes a number of functional programming capabilities increasing down the road.

How does the Lucee dialect now and in the future compare to a language like Clojure? Perhaps the main thing Clojure offers that Lucee does not is a focus on immutable data and concurrent processes allowed or made easier over that data?

Currently I just recreationally program in APL and J but will probably spend more time with Lucee and a framework for web programming. There is also a functional Java library but my guess is Lucee dialect has a decent subset of this library so perhaps no need to use it within Lucee.

For what it’s worth, FW/1 4.1 (latest version is 4.2) removed out of the box support for Clojure. It was mostly added by the author of the framework as a stepping stone for his company to migrate their existing FW/1 apps over to Clojure. It was, and still is an interesting concept of bridging the 2 langs together.

Comparing the functional aspects of CFML, a dynamic scripting lang that focuses a lot on OOP, to a functional lang like Clojure is really apples and oranges. There’s definitely more than enough functional capability in CFML to “do the job” (map, reduce, filter). There’s also open source libs like which you can incorporate into your project for added functional capability.

If you’re looking to use Lucee for something, focus on that and the CFML libs/frameworks offered. I wouldn’t worry about FW/1’s Clojure support as it’s no longer developed to be a part of the framework. FW/1 is still a great choice too.

The CFcollection is nice and might fit most functional preferences. The main Java functional library has quite a bit more “functionality”. Any down sides for efficiency or debugging using this Java library with Lucee?

I’ve never used it so can’t say much. Mileage may vary when integrating it with Lucee as the Java functions may expect a specific Java class type different from what Lucee constructs under the hood in order to process the data you are working with. This will potentially require some extra code to do some pre/post conversions so that Lucee/Java know what they’re working with.

I also forgot to mention another CFML lib for using Java Streams to perform functional tasks as well: It’s a ColdBox module but it can definitely be set up to work in just about any CFML application.

Nice libraries.