> From: "Marc Nieper-Wißkirchen" <xxxxxx@nieper-wisskirchen.de> > Date: Friday, September 11, 2020 3:28 PM > > Am Fr., 11. Sept. 2020 um 20:50 Uhr schrieb <xxxxxx@ancell-ent.com>: > >> That goal was and is not one of the major problems with R6RS! Not to >> mention that another was its finalization 1 month before the first >> release of Clojure. >> >> If any of us have a pet project that's a true application with wide >> appeal, but really needs help to get it to progress well, please ask. >> Certainly too early for a Schemeapp topic, but the phenomena of the >> "killer app" certainly sells hardware. In the bad old days, it sold >> languages like FORTAN, LISP and COBOL. >> >> But today both are functions of ecosystems, one reason you buy an >> iPhone or an Android phone is because too many things you need have >> apps on those two ecosystems, and no others. Python, the JVM, they >> have huge ecosystems, and Clojure's success, especially in writing >> real world applications, is intimately tied to that. > > Clojure, being tied to the JVM, has the same evaluation model I don't know what this means in this context. > and, in particular, no proper tail calls. Why would I consider it > a proper functional language? It's a hosted language, CLR and JVM first, now I believe JavaScript and JVM are the big platforms. For the JVM, it has hacks that cover a good fraction of proper tail call use cases. One is even nice in confirming a tail call during compilation (in the modern style, everything is compiled before execution), so you catch errors there error instead of by blowing your stack. But last time I checked, functional programming wasn't defined by TCO, however nice it is, and I assume essential to your FP coding style. Let's see, maybe Wikipedia isn't horrible in its introductory paragraphs? In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that each return a value, rather than a sequence of imperative statements which change the state of the program. In functional programming, functions are treated as first-class citizens, meaning that they can be bound to names (including local identifiers), passed as arguments, and returned from other functions, just as any other data type can. This allows programs to be written in a declarative and composable style, where small functions are combined in a modular manner. Functional programming is sometimes treated as synonymous with purely functional programming.... Clojure is a *lot* more purely functional than Scheme, is by default functional, with mutation isolated to special cases, including the MVCC STM one. The data structures are all immutable and readable, and the collections are particularly well done, primarily lists, vectors, maps, and sets. All that said, and a lot more unsaid, its lack of a real community (well, at least reaching to the keepers of the core language) is not the only reason I'm back to Scheme. - Harold