7 ms·
We're using it in production at my job. (In a decent-sized polyglot system also made up of Haskell and Clojure). There aren't as many libraries available compa
by m0nastic 13y ago
We're using it in production at my job. (In a decent-sized polyglot system also made up of Haskell and Clojure).
There aren't as many libraries available compared to more popular languages, but I haven't yet had too much trouble getting things accomplished. For the above-mentioned languages we're using, I'd put the useful library situation at: Racket-> Haskell-> Clojure in order of least to greatest.
Depending on what you need it to interoperate with, it's totally usable in production environments as it stands.
- iso8859-1 13y agoare you counting Java libs? then that ordering comes as no surprise.
- m0nastic 13y agoI wasn't (although that admittedly is one of the best benefits of Clojure). Also, that's not a listing of the total number of libraries; it's ranked based on the number of useful ones (where "useful" is a completely subjective term that relates to how often I've looked to see if a library exists that does what I want). Racket actually has more overall libraries than you'd expect considering its popularity, but I've found that many of them are old, no longer updated, scheme libraries (from the days before Racket rebranded from Dr. Scheme). That certainly doesn't make them useless, but I'm reticent to mix scheme-style code into my project. I'm least familiar with Clojure (I've only been deploying it for the past two weeks or so), so I'm sure my opinion will change, but right now it feels like a slightly less good Racket with a philosophy I find agreeable and more practical libraries (plus Java interop).
- samth 13y ago> Racket actually has more overall libraries than you'd expect considering its popularity, but I've found that many of them are old, no longer updated, scheme libraries (from the days before Racket rebranded from Dr. Scheme). That certainly doesn't make them useless, but I'm reticent to mix scheme-style code into my project. Which libraries are you referring to? Libraries distributed with Racket, or libraries on Planet (or somewhere else on the internet)? And any sense of which libraries in particular you notice being missing?
- m0nastic 13y agoSorry, I should have been more specific; but I was referring to the libraries available on Planet. It looks like the new Planet that you guys just shipped doesn't have all the legacy mzscheme packages that used to seem to be the majority of packages. I don't know if that was intentional, but if not, I think that it's a nice tangential benefit. I just remember every time I'd search for something on Planet, most of the results I'd get back were for old scheme libraries. I know it's annoying as a developer to hear a vague criticism like "there's less useful libraries" without being able to provide a list of concrete items; but I'm going to annoy you by not being able to come up with anything specific right now. Sorry ;) I will say though, I think Marketplace looks really neat, and I'm looking forward to testing it out for some things internally.
- samth 13y agoOk, that makes sense. There are indeed lots of old bit-rotted libraries on planet, and not as much guidance as would be nice on how to pick good ones. If you do come up with something specific, just holler. I'm glad you're excited about Marketplace -- Tony's done some really great stuff with that. Finally, if you're able to share more privately about what your company is doing with Racket, I know we'd be quite interested.
- 616c 13y agoI am also very interested in Marketplace. I am just starting, but when I saw it I thought Erlang/OTP-ish concurrency and network stuff on Racket? Yes please!
- oskarth 13y agoHow come you are using all three of those languages in production rather than just one of them?
- m0nastic 13y agoI'm using different languages for different parts of the system. While I could probably do everything in one language, I'm not sold on the idea that that's actually a good idea (aside from developer convenience, which considering I'm the only developer I don't rate very highly). I also don't feel qualified enough as a language person to really hold defensible opinions about their relative strengths and weaknesses yet. For example, part of the system is a network service that runs deployed on servers in our environment. All that code is Haskell. I didn't want to have to deploy and manage an interpreter or JVM on those systems, and I don't trust myself to write C that I feel confident deploying in production. Haskell seemed like a good win there (other folks might use Go, or whatever). It turned out to be really easy to write a network server in Haskell that receives the messages that the service needs to receive. Also, it was the first time I used a language that had good (or really, any) pattern matching, and I'm sold on it. The "business" logic of the system is all currently in Racket. It could certainly have been written in Haskell, but I'm still getting up to speed in it, whereas I was able to get pretty minimal functionality up and running with Racket very easily. Right now only the web interface is Clojure. I briefly considered using Yesod for the web piece, but it seemed really complicated. And although Racket has a nice web server, it requires buying into the "continuations" style that they advocate (or rolling your own web libraries, which seemed like a bad idea for this project). I think the continuation-based approach for web servers is certainly valid, and maybe even technically better, but they're swimming against the tide with that approach, and as web programming is so far my least favorite part of building this system, I wasn't willing to buy into that enterprise. Thankfully, I was able to get a Clojure web app up and running very quickly (basically just Ring and Compojure). The system is designed where there's pretty hard boundaries between all the parts, so by the time all is said and done, it might all be written in the same language; but that's not necessarily a design-goal. I figure different languages seem to have different strengths, and there's not really a good reason for me to try and shoehorn everything into one.