Earlier quoted context omitted.
Chicken is by no means an insanely fast scheme (even though it is fast compared to many other dynamic languages). If you can get gerbil to work you will probably have at least another 1.5-2 to gain.
I got it to work - in fact, here is my image: https://github.com/insightfulsystems/ubuntu-gerbil Chicken is plenty fast enough, though.
Ask HN: Best Lisp for software development?
131–138 of 138 posts
Re: Ask HN: Best Lisp for software development?
#132Earlier quoted context omitted.
> but expect no fixes or enhancements from now on. This is a common misunderstanding around the Racket 2 proposal. Racket is completely different from Python and Perl when it comes to syntax. Racket already supports multiple syntaxes over the same semantics, and is designed for people to be able to build new syntaxes themselves. IOW, Racket 1 (more precisely: `#lang racket`) and Racket 2 will not be different runtime…
I get what you are saying, but in that case they should just call it Honu, instead of calling it Racket 2. Call things by what they mean, rather than using a well marketed name to promote a new language. When you say Racket 2, people will almost always take it as a the next Racket version. If I implement Python in Racket, I will call it Python, not Racket 3. Python is Python, Racket is Racket. By the way, Perl 6 is s…
Racket, the platform, is very unlike common programming languages like Python, Ruby, Perl, JS, etc. And I don't mean the fact that it's a Scheme/Lisp. I mean the Language Oriented Programming [1] features it's built for.
It is a platform for designing and building languages. It's only sensible that it should be able to run all the different languages in the same program. In fact, one can create an arbitrary new language and use that new language all within the same running process. In fact, as you can see from the link I cite in [1], the languages can all look and behave completely differently, and yet all be valid "Racket": put them in a .rkt file and load it up and see.
I can now sort of understand your view. I am not a Racket contributor, though I do use it every now and then, and to me "building a new language in Racket" now means something completely different than what it'd have meant before I became familiar with Racket (the platform).
I think the difference stems from the fact that what Racket calls a "language" (`#lang`, in Racket terms), is actually just a syntax. In languages like Python/Perl/JS, the syntax and the semantics are so closely intertwined they might as well be the same thing, and we call this "single" thing "the language". But neither of those syntaxes are as extensible/user-modifiable as in a lisp, and none of those semantics are available for use with different syntaxes as in Racket.
A "language" in Racket does not change the core semantics of Racket-the-platform, only the syntax available to the programmer in that one file/module, and how that syntax gets translated into core Racket semantics. In this way, `#lang pollen` and `#lang bf` are not any special "compatibility modes" of Racket. In fact, right now, there exist multiple "Racket"s within Racket: there's `#lang racket/base` and `#lang racket` and then there's the type-checking variant `#lang typed/racket`. Neither is a special mode of another, or of the runtime; all are just different syntaxes of the same runtime.
I reckon Racket 2 will similarly be just a different syntax. Or, as we like to call those in Racket terms: a `#lang`-uage.
1: https://beautifulracket.com/appendix/why-lop-why-racket.html
Re: Ask HN: Best Lisp for software development?
#133Earlier quoted context omitted.
> you do get exposed to a fair amount of Java stuff Can you please expand on this? I've been using Clojure as my main PL for the past 3 years, and honestly only once I had to actually deal with some Java code (when I needed to figure out some Selenium stuff).
When I learned Clojure, I also needed to learn about Maven, and POMs, and JARs, and the Java classpath, etc — and encountering all that stuff for the first time at the same time I was learning Clojure meant that I sometimes couldn't tell what concepts were part of Clojure, and what concepts were part of the Java ecosystem. This wasn't helped by the fact that the bulk of the "how to compile Clojure" documentation was…
Now, you still need to learn about a package manager and possibly a build tool. So substitute learning Maven for one of the Clojure ones: tools.deps, Leiningen, or Boot.
But I mean, you had to learn NPM one day as well no? And eventually Grunt or something like it, and WebPack, etc. Learning about a language's package manager and build tool is part of any learning of any language. But yes, if you already knew NPM and using ShadowCljs does mean you save yourself that part.
I'm not convinced that learning about how the JVM loads dependencies, gets packaged as Jars or UberJars, and how to use tools.deps or lein is any harder than what other languages force you to learn. So you're probably right in assuming the main issue is documentation not being tailored to very beginners.
Re: Ask HN: Best Lisp for software development?
#134[Chicken Scheme]( https://call-cc.org ) is fast, makes native binaries, and has a giant library of "eggs" covering most of the SRFIs. It's R5RS working its way towards R7RS. I've been using it for my "Python but fast" code for the last year or so, and it's one of the best production languages I've ever had. [Chez Scheme]( https://scheme.com ) is super fast, and has the best REPL I've ever seen, but can't easily make…
Great response, I really like chicken when working on Mac or Linux, but it's windows (where I do most of my development) that it struggles. Some eggs just don't install and the error messages are really bad at that point. Trying to install awful to develop a web api I had to give up, couldn't find a way of getting it installed on windows (no problem on OSX or Ubuntu 18.04) Installed Portacle and (ql:quickload "hunche…
Re: Ask HN: Best Lisp for software development?
#135Earlier quoted context omitted.
Great response, I really like chicken when working on Mac or Linux, but it's windows (where I do most of my development) that it struggles. Some eggs just don't install and the error messages are really bad at that point. Trying to install awful to develop a web api I had to give up, couldn't find a way of getting it installed on windows (no problem on OSX or Ubuntu 18.04) Installed Portacle and (ql:quickload "hunche…
I really wanted to love Chicken but I remember finding a number of eggs I wanted to use that were broken for OSX. If I were a better programmer I guess maybe I could have figured it out.
Re: Ask HN: Best Lisp for software development?
#136I've seen some comments that say, "well, if you use CL, that's all you know." I'm not sure that it's a problem though, because the standard means that you can often use much of the same code on multiple implementations, operating systems and architectures. e.g., you're not stuck on the JVM, but can use it (with ABCL). You can probably use the same implementation, like CCL or SBCL, on Windows, Mac, Linux, on x86, ARM, and so on.
Re: Ask HN: Best Lisp for software development?
#137Earlier quoted context omitted.
I really wanted to love Chicken but I remember finding a number of eggs I wanted to use that were broken for OSX. If I were a better programmer I guess maybe I could have figured it out.
Which eggs? I'm on Mac, and in Chicken 5 currently, everything has "just worked". SDL required me to hit the SDL site for the frameworks, the rest I've used have had no external requirements.
Re: Ask HN: Best Lisp for software development?
#138Earlier quoted context omitted.
> but expect no fixes or enhancements from now on. This is a common misunderstanding around the Racket 2 proposal. Racket is completely different from Python and Perl when it comes to syntax. Racket already supports multiple syntaxes over the same semantics, and is designed for people to be able to build new syntaxes themselves. IOW, Racket 1 (more precisely: `#lang racket`) and Racket 2 will not be different runtime…
I get what you are saying, but in that case they should just call it Honu, instead of calling it Racket 2. Call things by what they mean, rather than using a well marketed name to promote a new language. When you say Racket 2, people will almost always take it as a the next Racket version. If I implement Python in Racket, I will call it Python, not Racket 3. Python is Python, Racket is Racket. By the way, Perl 6 is s…
Wrt to supporting new versions of a language Racket has an excellent track record. The language mzscheme (used before racket) is still supported - and is implemented using the language machinery present in Racket.