Which LISP dialect should I learn if I'm a n00b to LISP/Functional programming and only intermediate level at general...

Which LISP dialect should I learn if I'm a n00b to LISP/Functional programming and only intermediate level at general purpose/OOP programming in Python?

Attached: 973493c0b55845445472ec7a67475b92--manga.jpg (236x314, 21K)

Other urls found in this thread:

docs.racket-lang.org/htdp-langs/index.html
news.ycombinator.com/item?id=2414035
archive.org/details/MIT_Structure_of_Computer_Programs_1986/
mitpress.mit.edu/sicp/full-text/book/book.html
cs.cmu.edu/~dst/LispBook/
github.com/norvig/paip-lisp
twitter.com/NSFWRedditImage

Emacs lisp, write your own extension in and for emacs

Scheme

if you want to learn a language that's actually used by people in the real world for their jobs, instead of just for shits and giggles, then choose clojure or erlang

I also recommend Clojure, Erlang or Elixir
At least Clojure has decent interop with Java
and Erlang/Elixir are used pretty heavily in telecom

Clojure runs on the JVM though, wouldn't that make it slow?

It has a slow startup like most stuff that uses the JVM
Don't know about the overhead of Clojure vs Java though
Stop optimising your code before you write it, and if you came from Python almost everything is going to be faster.

Racket
docs.racket-lang.org/htdp-langs/index.html

Unironically, just read SICP.

If you're not sure what you want to make, you can start using Emacs and learn Emacs lisp to customize your editor with all kinds of functionality. Emacs lisp--though it has some awkward historical defaults (dynamic binding)--is also very similar to common lisp if you later want to move on to that

For a "modern" take on lisp, maybe Clojure. I don't know much about it, but some people swear by it. Its native support for maps and stuff might make you feel at home as a Python programmer

For a generally well-constructed functional lisp, you could look at a scheme, or Racket specifically. Schemes are based on a smallish standard core, and Racket should have everything you need from a modern programming language. It's well-documented and "batteries-included"

If you really are that concerned with performance, you can check out common lisp under SBCL, which is probably as performant as you'll get out of a well-supported lisp implementation. Common lisp is versatile and comprehensive, but it's also big and complicated. It has a culture of "bottom-up" programming, where you program by building the language (via macros) up to your domain. Paul Graham wrote a 432-page(!) book on this

The unifying theme of lisp is that the code you write is a data structure, so try to learn about macros in your time there.

Erlang and Elixir aren't lisps, so I'm not sure why they're being recommended in this thread. But you're allowed to learn them too

erlang and elixir are functional programming though, and anybody who is asking what to start learning probably only knows the idea "functional programming" and doesn't care about what would differentiate a lisp from erlang or elixir

That's probably right, but "Erlang" doesn't seem to me like it answers the question "What LISP dialect should I learn" (which is to say, the question seems more concerned with lisp than with functional programming specifically)

to assure the OP, there's a breadth of functional (and non-functional) languages out there that take different approaches to the idea of computing, and lisp is just a few of those. Depending on who you ask, Lisp isn't even particularly tied to the idea of functional programming; certain dialects espouse it more than others

sure, point taken, but for a someone who is a noob at functional programming, i think it's a decent piece of advice to point them toward languages with more mainstream applications...

anyhow this is a nice post:
news.ycombinator.com/item?id=2414035

Attached: 1526007948498.jpg (600x338, 83K)

Scheme. It's reasonably pure.

Scheme
GNU made the right choice with Guile and it's quickly being adopted as the main config/extension/api language for all their programs.
archive.org/details/MIT_Structure_of_Computer_Programs_1986/
mitpress.mit.edu/sicp/full-text/book/book.html

Attached: computerscience1451435773637.gif (320x240, 2.42M)

STEEL
BANK
COMMON
LISP

Common Lisp
Go on libgen.io and get this book or read the old free draft, nothing has changed really
cs.cmu.edu/~dst/LispBook/

If it's too easy for you skip right to Norvig's CL book or On Lisp by pg
github.com/norvig/paip-lisp

the point of common lisp is you can manipulate it to be any 'paradigm' you want, so you can roll your own pattern matching, your own OOP that is similar to CLOS, you can figure out the entire "stack" meaning the compiler and shit. and your editor are all in the same language and you can hack the fuck out anything you want to learn it.

As an example, the book CS:App (Computer Systems: A Programmer's Perspective) there's an entire chapter on a Y64 architecture, which is an invented architecture for the purposes of learning architecture in general. You can take that entire specification and write it in Common Lisp quite easily by yourself in a weekend. You can create your own assembly and bytecode generators, your own emulated CPU threads and cache, ect. Of course this is a toy and not a production release, but that's how you learn from doing it in the small and discovering how shit works yourself.

CL is gross.
The only reason it's used at is because newfags get tricked by the name - They see `common' and think it must be some kind of generally accepted dialect/standard.

CL can be anything you want it to be, you can write a C clone in it or Standard ML clone, or Scheme, whatever you want.

Very slow startup (several seconds) if you don't aot compile it. Once running it's very fast. You can make it start fast too using graalvm, but a single output file can be very large. I'm using it for my first gui program because java libraries I need are already there.