articulate-common-lisp / articulate-common-lisp.github.io

docs/specs for a tutorial site for a Common Lisp environment
http://articulate-lisp.com/
103 stars 14 forks source link

System recommendations #39

Open fare opened 9 years ago

fare commented 9 years ago

My own uiop:run-program is IMNSHO much easier to use and much more powerful than external-program. Or inferior-shell, for a higher-level interface to the same functionality, with an alternative to string interpolation, etc.

I've never used cl-csv, but I admit I'm slightly jealous it was chosen instead of my fare-csv. Not jealous enough to dig in and work towards library unification, though.

For cl-ppcre, I find that optima-ppcre is often a much better interface to the same underlying library.

Instead of metabang-bind and the endless variations on the idea, necessarily incomplete, I prefer uiop:nest which allows to reuse existing binding forms and is thus complete by construction.

I don't condone anaphora. It is generally considered bad style, as opposed to explicit binding forms, e.g. if-let vs aif.

I'm glad you didn't include cl-fad in your list of systems; I consider my uiop to be a higher-quality replacement for the same functionality.

pnathan commented 9 years ago

Thank you for your thoughts.

First, I want to make clear: my library recommendations are mine, they are libraries I've used and found fit for use. They do not implicitly condemn other libraries.

My own uiop:run-program is IMNSHO much easier to use and much more powerful than external-program. Or inferior-shell, for a higher-level interface to the same functionality, with an alternative to string interpolation, etc.

I'll have to look at it next time I am working with running external programs.

I've never used cl-csv, but I admit I'm slightly jealous it was chosen instead of my fare-csv. Not jealous enough to dig in and work towards library unification, though.

I'll have to explore fare-csv. One requirement I have of csv parsers is that they support a streaming interface.

For cl-ppcre, I find that optima-ppcre is often a much better interface to the same underlying library.

Interesting. I'll have to explore it.

Instead of metabang-bind and the endless variations on the idea, necessarily incomplete, I prefer uiop:nest which allows to reuse existing binding forms and is thus complete by construction.

I think you have a preference for fareware. :-) I'll take a look at it when I next have an occasion to use metabang-bind.

I don't condone anaphora. It is generally considered bad style, as opposed to explicit binding forms, e.g. if-let vs aif.

I do. I explictly choose power over limitation in my software system choices when given the option.

I'm glad you didn't include cl-fad in your list of systems; I consider my uiop to be a higher-quality replacement for the same functionality.

I've had good success with cl-fad when I have used it.


One note: uiop is a single library (http://quickdocs.org/uiop/). It might be regarded as a "Utilities for Implementation- and OS- Portability" framework even, with the commensurate pros and cons of frameworks. I can append uiop to the suggested system list, with notes about its different libraries, but I'd also like to preserve standalone libraries for those pieces of functionality.