[Boards: 3 / a / aco / adv / an / asp / b / bant / biz / c / can / cgl / ck / cm / co / cock / d / diy / e / fa / fap / fit / fitlit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mlpol / mo / mtv / mu / n / news / o / out / outsoc / p / po / pol / qa / qst / r / r9k / s / s4s / sci / soc / sp / spa / t / tg / toy / trash / trv / tv / u / v / vg / vint / vip / vp / vr / w / wg / wsg / wsr / x / y ] [Search | Free Show | Home]

Which LISP is the "best"?

This is a blue board which means that it's for everybody (Safe For Work content only). If you see any adult content, please report it.

Thread replies: 41
Thread images: 7

File: lambda.jpg (9KB, 231x228px) Image search: [Google]
lambda.jpg
9KB, 231x228px
For the last few weeks I've been studying the SICP meme. And boy, it's a lot of fun. Thanks for pointing me int the right direction, /g/.

However, apparently nobody is using MIT Scheme for anything apart from learning SICP. So I'm wondering what I should learn next:
CL, Chicken Scheme, Racket or Clojure?

I had a brief look at Clojure and found it pretty interesting. Check my FizzBuzz:

(defn FizzBuzz []
"Just the usual FizzBuzz..
But multiline comments are kinda cool, eh?"
(doseq [i (range 1 101)]
(println
(cond
(zero? (mod i 15)) 'FizzBuzz
(zero? (mod i 3)) 'Fizz
(zero? (mod i 5)) 'Buzz
:else i))))


But I'm also considering Racket, since it seems pretty cool. I'd love something that not so many quirks, is actually used in the wild, has decent Libraries, can be used for many different things and most important: has good web frameworks.


Any recommendations and opinions welcome...
>>
I highly recommend jQuery
>>
>>62098545
I love Racket but I won't sell it to you because it doesn't have great web frameworks.
>>
What's wrong with Common Lisp?
>>
>>62098654

Very funny..

Let me rephrase it:
I'd like to use a LISP for fun and maybe even for a real job. Can anybody point me in the right direction? Are Racket or CL better than Clojure?
>>
File: 1503221363090.png (304KB, 468x487px) Image search: [Google]
1503221363090.png
304KB, 468x487px
Honestly scheme. But I always appreciated MIT scheme just reasons. It is all good in the end.
>>
Common Lisp is the only one worth looking into if you actually want to build something. At least SBCL and Clozure implementations have tail-call optimizations so you get what Scheme had revolutionary 40 years ago anyways.
>>
It is a very good idea to learn Scheme/Clojure before looking at Common Lisp. It will teach you early to write clean functional code. Common Lisp is great, but if you don't know what you're doing you can easily write some very tangled programs in Common Lisp.
>>
>>62098713

OK, but does it have any halfway decent web frameworks? Or what would you use Racket for?


>>62098736

Honestly I don't know much about CL.
It seems like CL is a much bigger language than Scheme with a complicated scoping and all that.

It felt like Scheme being C and CommonLisp being C++ - if you don't mind the comparison.

But hey, I don't know much about CL. So is it worth learning? Is it hard to learn?
>>
>>62098769
professional clojure programmer here. It's much less nice than, say, racket or CL, and has some bullshit issues when it comes to the typing (stuff that applies to the clojure maps does not always work on the java ones, using sequence functions on the arrays change the input's type to a list, and so on), - but laziness by default and that small amount of syntactic sugar that makes you distinguish hashmaps from sets/vectors/lists at eyes' glance make up for what it lacks.
I'd say that it's quite comfy.
The only downside is that you become so productive in it that you find yourself worrying about much more stuff already from the beginning (optimization, and so on), and also you start to care much more about the actual goal of the software you're writing because you reduce the amount of fighting with the language to the absolute minimum.
>>
Racket does everything """the right way""" and has a decent standard library. You will hear CL and Clojure fags complain about Racket not having enough features but they most likely just haven't spent very much time learning Racket.
On first glance, it's Scheme with batteries included, but what the Racket team is trying to sell right now is the macro system, which is definitely better than every other popular lisp (well, I haven't really used Shen, but I doubt it's as well put together). But it takes some effort to really learn, unlike CL/Clojures "easy but shitty" macro systems.

>>62098878
>It felt like Scheme being C and CommonLisp being C++
I agree with that comparison, although Scheme and CL are both miles more powerful than C or C++.
The thing about Scheme is that it's an extremely small language; thus, if you don't use macros in Scheme, you'll be disappointed by the lack of features. But if you take advantage of macros, you'll realize that they solve many problems in much better ways that you would find in other languages.
I don't really like CL because the standard library is big, disorganized and the documentation is subpar compared to Racket. I value consistency and Racket has very consistent APIs; not sure I can say the same about CL. I think you need to use external libraries heavily to really be productive with CL but since I don't know which are effective, it just feels awkward digging through weird function names (mapcar, dolist, setq) and features that seem like compromises (type specifiers, declare)
>>
I'm not sure what will get you a job but I'd conserdying Hy which is python's lisp. Keep in mind in most jobs you need to interact with non-hipster code so I would stay away racket, even though that's my favorite.
>>
>>62098966
>if you don't use macros in Scheme, you'll be disappointed by the lack of features
Non functional, mostly C-like language man here, I see people mention macros a lot, can you give an example of them? Are they like C pre-processor macros, some kind of meta programming concept, or something else under the same name?
>>
File: ahahahaha.png (86KB, 274x302px) Image search: [Google]
ahahahaha.png
86KB, 274x302px
>>62098769
>and maybe even for a real job
>>
>>62099161
Metaprogramming. You can write Scheme functions that output Scheme code. You can even keep track of some global state that only exists at compile time, and then use that state to generate a bunch of code that actually gets executed.
It's not purely textual like CPP; instead, Scheme syntax is made to be easily represented by Scheme code, so you can work with and manipulate it easily.
For instance, the expression
(define x 3)

is really just a list, where the first element is the symbol "define", the second is the symbol "x", the third is the number 3.
Thus its easy to pull apart syntax and put it back to gether, create new expressions, etc.
>>
>>62099161
It's metaprogramming made extra easy, and you use them when you need something to do stuff outside the normal functions' responsibilities - for example, you might define a whole new language construct, on par with `if` and `while`. And it's easy in lisp because you don't write down just text, but data structures that operate the AST directly - which means that you can operate the former ones as well. In C it'd be much, much harder because of the complex ALGOL-like syntax it has.
>>
>Thanks for pointing me in the right direction

Was this intentional or did you type the t because you were following with "the"
>>
>>62099313

I could lie and say it was intentionally, but I just typed too fast.. ;__;


>>62098989

Uhm..

Well I've done some Python and Ruby in the past. I don't think a Lisp with Python interaction is what I'm really looking for. Clojure seems to have a lousy startup time, but at least you have (almost?) Java speed when it runs.. :3


>>62099259

I said "maybe", OK?!?


>>62098966

Thanks!
Yeah, that was the impression that I got, Racket being a little more "cleaner" than CL.

I probably have to look at more code in Racket and CL to actually be competent to compare..


>>62099272
>>62099273

I've heard that Macros are more of a "special purpose" thing and that you shouldn't use them without a good reason. Is this true?


>>62098955

Whoa, there are really professional clojure programers out there?1!

>It's much less nice than, say, racket or CL

I appreciate your honesty..


>that small amount of syntactic sugar that makes you distinguish hashmaps from sets/vectors/lists

Yeah, that's what I also really found remarkable.


>I'd say that it's quite comfy.

I also think so, but I have a few issues:

1) The JVM ecosystem is somehow cool (a lot of Java jobs, good speed) but also kinda meh (Java "business culture", Clojure being a simple JAR and closely tied to the JVM)

2) Clojure for web is kinda.. I don't know, "Ring" looks kinda cool, but from what I've heard clojure web development is not really easy since you have to do a lot of things yourself. But ClojureScript compiling to JS being a huge asset here!

3) Most people seem to use Clojure for data analyzing which is not really my cup of tea..
>>
>>62098545
>apparently nobody is using MIT Scheme for anything apart from learning SICP


No one is using Lisp or Scheme or Racket for anything other than learning it.


It is completely useless in the real world.
>>
>>62099423
/thread
>>
>>62099384
>I've heard that Macros are more of a "special purpose" thing and that you shouldn't use them without a good reason. Is this true?
Well, the right answer is `it depends`. The technically correct one is: macros are there mainly to simplify your life and abstract away the boilerplate you might be having to type every time you need to do a particular construct. Just consider the fact that CLOS (common lisp object system) is built entirely using macros and basic CL functions.
This being said - macros are dangerous because they might hide from you something important that could potentially fuck you over in a longer term.
>The JVM ecosystem
The JVM is kinda crappy, but that's what the """business customers"""" usually want, and, whether you might like it or not (I do not), it currently dominates the software world. Fortunately, before I learnt clojure I had solid 2 years of java experience between college and various internships - it helps you a lot with stacktraces/Exceptions/various other Java-related shenanigans. Do never forget that JVM is the platform, and Java/Clojure/Scala are only its host languages, so knowledge of that and the Java standard library is really, really useful.
>Clojure for web
That's what basically every single employer is going to be wanting from you, sorry to disappoint you here. Bear in mind that quite a lot of stuff is already available out there because you interoperate with Java seamlessly, so whatever works for java works for you as well. Also, Lisp is no frameworks' land, because an average lisp programmer chooses it precisely because it doesn't holds his hand - which is what frameworks do, so if you came to clojure expecting to find the next RoR - you're in the wrong place.
(contd.)
>>
File: concerned citizen.jpg (70KB, 479x720px) Image search: [Google]
concerned citizen.jpg
70KB, 479x720px
>>62098545
> which Language of Insufferable and Superfluous Parenthesis is best
>>
>>62099384
>>62099636
(cont.)
Clojurescript, on the other hand, is cool because if you have touched JS for more than 5 minutes for real world development with react/vue/any other databinding/frp bullshit you'll know what I'm talking about. It's so halfassed it hurts for me to look at the poor souls who have to do that shit for the living. The typing is unbelievably bad, and trying to do a basic null-check is a major PITA because they don't have just one nil value - they have `undefined`s, `null`s, 0s, empty immutables which are """kinda""" nilables, and so on. So, obviously, being able to write in a language that's interoperable with javascript and is not retarded is a huge blessing, - clojures' downsides are really tiny compared to THAT.
>Most people seem to use Clojure for data analyzing
I must say that I was surprised as you are to find so much data scientists among clojure programmers. Statistics are not my cup of tea as well (not yet, at least), so I can't tell - but bear in mind that clojure can be made really fast with some JNI and JVM profiling magic - which is something those guys often use.
>>62099596
(You)
>>62099662
Blub programmers are not welcome
>>
>>62099272
>>62099273
Neat.
>>
I learned scheme in University
Seems really good
>>
>>62098966
>Racket does everything """the right way""" and has a decent standard library. You will hear CL and Clojure fags complain about Racket not having enough features but they most likely just haven't spent very much time learning Racket.

Not hating on Racket or anything (since it's a great Lisp), but I have to point out something important here:

It seems like every time I search for some library that is not part of the standard lib, CL and Clojure have a popular and recently updated option, while Racket definitely does not.
>>
>>62099964
That's true. Racket is having trouble getting dedicated contributers who are in fields other than PLT.

There is a built in web server library for Racket, but IIRC it's a little bit awkward.
>>
>>62099636
>>62099735

Thanks for the clarification..


>>62098736

Actually I'm a little bit disappointed that no CL programmer shared some insights. It would be a nice addition to the friendly Clojure and Racket guys here..
>>
>>62098545
The best lisp is Javascript.
>>
>>62101852
this
>>
>>62101852
>>62101867
>>
what about Idris or Shen?
>>
>>62098545
Go with Racket OP
>>
Common Lisp and Scheme are stuck on the idea of a cons cell. What is a cons cell? Its a linked list. If you know about data structures, doing everything with linked lists is limiting and inefficient even if the underlying implementation is not linked lists. Clojure is the only Lisp to break out of this and gives an entirely new API for dealing with container types.
>>
>>62101647
>Actually I'm a little bit disappointed that no CL programmer shared some insights
I feel like this has to do that "professional" CL implementations that have "batteries included" for actual work (and not omitted like in the standard itself) cost thousands of dollar per user, like Allegro LISP or LispWorks. It's still stuck in the 70s in this way.
>>
File: pressure.jpg (89KB, 540x674px) Image search: [Google]
pressure.jpg
89KB, 540x674px
>>62098545
I have tried a few of them. I used to use racket but I didn't really like it because it was so similar to CL in its extensiveness. It didn't really follow the scheme standard so well either.
Recently I have been using Guile, which I quite like. I am unsure how good the libraries are as I have never used any of them before. But I know that it works well with C which means that you can do pretty much anything with it.
>>
Has anyone experience with "Lisp flavored Erlang"?

Sounds pretty intense to me..
>>
Common Lisp is by far the better choice if you want to actually build real software. However, since it's a much larger language than Scheme, it will probably take you a little longer to get proficient with it.
>>
>>62104835

But is it true that the "good" CL implementations are proprietary, like this guy said?
>>62102919
>>
>>62105235
SBCL isn't proprietary, though I don't think it's as business-oriented as the other two mentioned.
>>
>>62104757
I have, its very much a Lisp, you can hardly tell at all its built on Erlang. Robert Virding himself has said it was a mistake to call it Lisp flavored Erlang and it should be called Erlang flavored Lisp. Because LFE was designed by the implementer of Erlang it is built much deeper in the Erlang compiler than say Elixir. Needless to say it has very good multiprocess ability.
Thread posts: 41
Thread images: 7


[Boards: 3 / a / aco / adv / an / asp / b / bant / biz / c / can / cgl / ck / cm / co / cock / d / diy / e / fa / fap / fit / fitlit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mlpol / mo / mtv / mu / n / news / o / out / outsoc / p / po / pol / qa / qst / r / r9k / s / s4s / sci / soc / sp / spa / t / tg / toy / trash / trv / tv / u / v / vg / vint / vip / vp / vr / w / wg / wsg / wsr / x / y] [Search | Top | Home]

I'm aware that Imgur.com will stop allowing adult images since 15th of May. I'm taking actions to backup as much data as possible.
Read more on this topic here - https://archived.moe/talk/thread/1694/


If you need a post removed click on it's [Report] button and follow the instruction.
DMCA Content Takedown via dmca.com
All images are hosted on imgur.com.
If you like this website please support us by donating with Bitcoins at 16mKtbZiwW52BLkibtCr8jUg2KVUMTxVQ5
All trademarks and copyrights on this page are owned by their respective parties.
Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.
This is a 4chan archive - all of the content originated from that site.
This means that RandomArchive shows their content, archived.
If you need information for a Poster - contact them.