Re: Language interop hga@xxxxxx 11 Sep 2020 21:00 UTC

> 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