Man, what a good read. Makes me want to learn lisp! I've always been suspicious of the cult-like devotion that lisp engenders. It's like the xkcd says (paraphrasing and half-remembering): lisp...
Man, what a good read. Makes me want to learn lisp!
I've always been suspicious of the cult-like devotion that lisp engenders. It's like the xkcd says (paraphrasing and half-remembering): lisp programs have no side-effects, because nobody will ever run them.
But the way this article couches it as a mind-expanding language to learn, and compares it to python comps and C# linq - all that actually makes lisp sound good.
I'll probably learn rust and typescript first though :p
I'll just, uh, drop this here for when you get bored (learn 'scheme) — Do you want to learn Lisp? On your smart phone? While on the bus? Of course you do!
I'll just, uh, drop this here for when you want to be enlightened get bored
I recommend racket as a first lisp -- no need to learn a new editor and go through lots of complex setup -- everything works out of the box, and it has a track on exercism.org
I recommend racket as a first lisp -- no need to learn a new editor and go through lots of complex setup -- everything works out of the box, and it has a track on exercism.org
The syntax is the sauce for Lisp. The strength of its metaprogramming comes directly from it, the best I've seen of projects that try to "improve" the syntax basically just turn it into...
The syntax is the sauce for Lisp. The strength of its metaprogramming comes directly from it, the best I've seen of projects that try to "improve" the syntax basically just turn it into indentation-based rather than parentheses.
Personally getting rid of so many parens is what go me into F#. I get that some people love them, bu I find i can just read properly indented code faster, and in my case it got me in the habit of...
Personally getting rid of so many parens is what go me into F#. I get that some people love them, bu I find i can just read properly indented code faster, and in my case it got me in the habit of writing cleaner code in the first place.
That's fair, but an ML-derived language is going to be fundamentally different in capability from a Lisp. They have their place, and in many cases they're better for production code, at least for...
That's fair, but an ML-derived language is going to be fundamentally different in capability from a Lisp. They have their place, and in many cases they're better for production code, at least for the sake of advanced typechecking, but I always miss the obscene flexibility and power of (()(()())) and s-expressions.
That's runtime type checking, though. Lisp has that in the same sense every other dynamically typed language does. Typed Racket is closer to what I would like to have, but it feels like a second...
That's runtime type checking, though. Lisp has that in the same sense every other dynamically typed language does.
Typed Racket is closer to what I would like to have, but it feels like a second language bolted on (with a good FFI to the first one). You only really get the full benefits of static typing if all the libraries you use have type definitions, and not even all of the Racket standard library does (or did, the last time I looked).
Oh dear, don't poke that bear. We should avoid triggering Lisp-2 purity crusaders whenever possible. Enough people already find these conversations tedious, there's no need to drag us all further...
Oh dear, don't poke that bear. We should avoid triggering Lisp-2 purity crusaders whenever possible. Enough people already find these conversations tedious, there's no need to drag us all further into Tartarus.
I loooove Scheme. It's a shame there's almost no dialect-agnostic community these days. Without a community creating libraries and end-user programs, it's really hard to understand how you can...
I loooove Scheme. It's a shame there's almost no dialect-agnostic community these days. Without a community creating libraries and end-user programs, it's really hard to understand how you can wrangle continuations and recursion into almost every other language construct around using macros. Those are the keys to the cult of Scheme, and if you don't like them, Scheme has no time for you. And most people don't like them.
Man, what a good read. Makes me want to learn lisp!
I've always been suspicious of the cult-like devotion that lisp engenders. It's like the xkcd says (paraphrasing and half-remembering): lisp programs have no side-effects, because nobody will ever run them.
But the way this article couches it as a mind-expanding language to learn, and compares it to python comps and C# linq - all that actually makes lisp sound good.
I'll probably learn rust and typescript first though :p
I'll just, uh, drop this here for when you
want to be enlightenedget bored(learn 'scheme) — Do you want to learn Lisp? On your smart phone? While on the bus? Of course you do!
I recommend racket as a first lisp -- no need to learn a new editor and go through lots of complex setup -- everything works out of the box, and it has a track on exercism.org
If someone could make a LISP with a good type system and good syntax I’d use it. But honestly functional TypeScript is kind of like that already.
The syntax is the sauce for Lisp. The strength of its metaprogramming comes directly from it, the best I've seen of projects that try to "improve" the syntax basically just turn it into indentation-based rather than parentheses.
Personally getting rid of so many parens is what go me into F#. I get that some people love them, bu I find i can just read properly indented code faster, and in my case it got me in the habit of writing cleaner code in the first place.
That's fair, but an ML-derived language is going to be fundamentally different in capability from a Lisp. They have their place, and in many cases they're better for production code, at least for the sake of advanced typechecking, but I always miss the obscene flexibility and power of (()(()())) and s-expressions.
It already does if you want it, more technical can be found here.
Edit: Even Racket has a strong typed variation.
I like that it has range types. Are you familiar with the TypeScript type system enough to compare the two?
Familiar with TS, not familiar with typed lisp to make any judgements, but you might be interested in Coalton, which is a static typed lisp.
That's runtime type checking, though. Lisp has that in the same sense every other dynamically typed language does.
Typed Racket is closer to what I would like to have, but it feels like a second language bolted on (with a good FFI to the first one). You only really get the full benefits of static typing if all the libraries you use have type definitions, and not even all of the Racket standard library does (or did, the last time I looked).
I just came across this, while looking into LFE (Lisp Flavoured Erlang), Coalton.
Github
Scheme is a Lisp. It'd be like saying "the professor chose Spanish instead of a Romance language".
Oh dear, don't poke that bear. We should avoid triggering Lisp-2 purity crusaders whenever possible. Enough people already find these conversations tedious, there's no need to drag us all further into Tartarus.
tone intended: complete sarcasm
I loooove Scheme. It's a shame there's almost no dialect-agnostic community these days. Without a community creating libraries and end-user programs, it's really hard to understand how you can wrangle continuations and recursion into almost every other language construct around using macros. Those are the keys to the cult of Scheme, and if you don't like them, Scheme has no time for you. And most people don't like them.
I can't say I'm a huge fan of the Lisp syntax. But I'd love a compile-able subset of the Nix expression language.
Have you explored the ML family much? Languages like Haskell, Ocaml, and F# might be along the lines of what you want, if you haven't.