5 ms·
As an imperative, stateful and even sometimes OOP developer, always finding functional programming very elegant but never really using it for real, Racket was t
by vascocosta 5y ago
As an imperative, stateful and even sometimes OOP developer, always finding functional programming very elegant but never really using it for real, Racket was the Lisp dialect that finally hooked me in.
I think the reason was because it came with batteries included and I could create complex applications using only the standard library or very few packages.
- hiq 5y agoWhat do you use it for?
- vascocosta 5y agoComplex applications was probably an overstatement but I've created featureful IRC and Discord bots, a database management application and right now I'm creating a graphical browser for the Gemini protocol. All my other previous attempts at using functional languages, like for instance Haskell, ended up in trivial applications, usually based in numerical analysis.
- Y_Y 5y agoI'd be interested to see this Gemini browser in Racket. Do you have a public repo?
- vascocosta 5y agoIt's in a very early stage, because I'm porting it from a previous Python code base, so it's not yet available. That said, I'll leave here two links for Racket software that inspire me. 1. Gemini server with tons of features, that I use personally: https://sr.ht/~rwv/dezhemini/ https://sr.ht/~rwv/dezhemini/ 2. Graphical Gopher browser: https://github.com/erkin/gophwr https://github.com/erkin/gophwr
- gus_massa 5y agoMy latest project was: Get some emails using IMAP, login to my site, find and scrap some data related to the sender of the email, and send a reply using SMTP. The logic is not very complicated, it uses 4 or 5 of the standard libraries and I avoid writing a hundred emails per day.
- dermal 5y agoYes, you (potentialy) can create complex applications in Racket. Bud did you? Of course, not. Nobody ever did. :)
- baldfat 5y ago"Batteries Included" means it is super easy to turn it into an executable. This was why I switched from Python for my personal projects.
- hoppyhoppy2 5y agoPython has described itself as a "batteries included" language for many years -- Python was the language that popularized that term for describing programming languages. So I don't think your personal definition of that term (easy executables) is universal. Everything I can find online indicates that it refers to the wide capabilities of the language's standard library.
- neutronicus 5y agoI don't think parent's definition of "batteries included" is as narrow as you're suggesting, and I also think yours is too narrow. It's a claim that the standard language distribution is sufficient to accomplish common goals of new users, without hunting down additional libraries or tools. As you say, the Python community coined the term, but their notion of its meaning perhaps slants a little too far towards their language distribution's strengths (standard library) and maybe suffers from lacunae towards their language distribution's weaknesses (a clearly-articulated way to create a GUI executable using the standard language distribution).
- jnxx 5y agoThere are several dimensions to this in Racket. For one, it has a platform-independent GUI library as part of the standard library, which Python (like most other programming languages) hasn't. That makes it interesting for writing GUI applications or using it for experimental programs which might require )or benefit from) a GUI later. Racket has also a standardized package management, which is much easier to use than the different Python facilities. Racket has a much better performance compared to Python and that in turn makes it possible to implement many algorithms directly in Racket which would be a C extension in Python, which makes it more complex to use them. Another thing is that Racket, as a member of the Lisp family, has also a deep low-level support. For example, it supports multi-threading with both green threads and os-level threads, futures, synchronization, making it possible to write parallel algorithms, which isn't practically possible in standard Python.
- nurspouse 5y agoI know some Lisp/Scheme, but never really did any projects in it. What did you use to learn Racket (both the language and the ecosystem)? If I had to read a single book/tutorial, what will give me the most bang for my time? I tried reading the official docs, but while they're great for reference, probably not the best in terms of tutorials/learning.