TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Racket frustrates me

122 pointsby lycopodiopsidaalmost 2 years ago

18 comments

neilvalmost 2 years ago
My info is a bit out of date, but I&#x27;ll try to go through big block of concerns...<p>&gt; <i>Do I want to iterate every 18 hours waiting for the pkgs.racket-lang.org build server to finish building my package? Then do it again because the build failed (my mistake, but now my users have to wait until later that week…)?</i><p>( <a href="https:&#x2F;&#x2F;pkgs.racket-lang.org&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;pkgs.racket-lang.org&#x2F;</a> is one way of sharing an open source package, through a public repository analogous to PyPI. There is a small delay upon uploading a new package&#x2F;version, because the server builds the package, runs the package&#x27;s tests, formats the package&#x27;s documentation, etc.)<p>I don&#x27;t know why it would take 18 hours, and I don&#x27;t see a bug report linked.<p>Maybe the author was just doing a commit to their own random GitHub repo, without telling the Racket packages repository, and so waited for the packages repository to do a periodic scan of all third-party packages&#x27; random Git&#x2F;Web sources for new versions? (I&#x27;d always go to the Racket package repo Web UI, and push a button of some kind there, and the new version would go through promptly.)<p>&gt; <i>Do I want to worry about packaging and deploying Racket code or could I simply do the same in most other languages without any fuss? I tried packaging Racket in Nix, it did not go well.</i><p>What didn&#x27;t go well? Racket runs on a wide variety of systems. I once experimentally packaged it for plastic OpenWrt routers, and it was straightforward. <a href="https:&#x2F;&#x2F;www.neilvandyke.org&#x2F;racket-openwrt&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.neilvandyke.org&#x2F;racket-openwrt&#x2F;</a><p>&gt; <i>Do I want to invest trust in a programming platform that considers umask of optional importance?</i> <a href="https:&#x2F;&#x2F;github.com&#x2F;racket&#x2F;racket&#x2F;issues&#x2F;4511">https:&#x2F;&#x2F;github.com&#x2F;racket&#x2F;racket&#x2F;issues&#x2F;4511</a><p>That was a helpful bug report, and looks like Matthew Flatt followed up on it promptly, and the bug report even got Matthias Felleisen&#x27;s interest.<p>Then, given Racket&#x27;s emphasis on cross-platform and backward-compatibility, Matthew&#x27;s decision to add the semantics support <i>without</i> breaking production for all of the existing users. That seems reasonable and predictable to me.<p>&gt; <i>Do I want to force users to adopt an application written in a language that uses at the very least 122M resident memory on my workstation? Or do I consider Python or Guile which both use less than 10M?</i><p>I don&#x27;t know how the author is running their code, so this might be the best Racket can do with the code, or maybe...<p>DrRacket (IDE) can run code with very heavy debugging instrumentation, and you can also do similar things from the command line.<p>DrRacket also has a feature that limits memory usage to a specified amount, IIRC defaulting to 128MB, which is great for alerting programmers on workstations with multi-gigabytes of RAM that they might be doing something inefficient.<p>Code can be run from source files (silently compiling&#x2F;recompiling on demand and caching for later runs), from the compiled form, or into a more packaged form (which IIRC does some tree-shaking).<p>What libraries you pull in can also mean surprises (e.g., I see a later comment by author in which they mention a third-party package having inappropriate dependencies).<p>If you want to run in really tight memory, that will affect how you program, and will include an awareness of the garbage collector.<p>But also, small executable size probably isn&#x27;t a top priority for Racket.<p>&gt; <i>Do I want to force users to package Racket which itself has no clear custody of its build inputs - can you produce a Racket tarball yourself that is exactly like the one on the release site? Who knows what’s in those tarballs!</i><p>I suspect the author is talking here about what&#x27;s now called &quot;reproducible builds&quot;.<p>&gt; <i>Do I want to invest in a community without a mechanism to apply community feedback constructively? RFCs?</i><p>The author got Matthew Flatt and even Matthias Felleisen giving prompt attention to the bug report they linked.<p>They&#x27;ll find similar responsiveness on the mailing list.<p>&gt; <i>Do I want to write 4x the code (in Racket) because I forgot my secret move was actually all the pypi packages that I took for granted in Python?</i><p>Depends what you need to do. The normal case, with programmers who are performing at normal levels and with normal practices is just to using PyPI (or NPM, or Cargo, or whatever), and bang out a solution to a normal problem.<p>But if you need to do something unusual, or you have programmers who are super-effective and can even judiciously bang out that reusable code as needed (better than the reused packages), then consider getting out of their way -- whether they just do it in Python or NodeJS, or they say this will go better in Racket, Rust, or something more exotic.<p>&gt; <i>Do I want to wonder about what was meant by “contributions welcome” when most of the core racket codebases at best have a README, at worst have no contributor documentation?</i><p>Documentation is one of Racket&#x27;s strengths. From near the top of <a href="https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;docs.racket-lang.org&#x2F;</a> , see, for example, the document &quot;Building, Distributing, and Contributing to Racket&quot;.<p>&gt; <i>Do I want to invest in a platform where leadership is building Rombus a.k.a. Racket2 instead of focusing on making core Racket just that much better and easier to adopt? (see also: Future of Racket.)</i><p>That&#x27;s a good question. Racket is solid for production, has features that other languages still haven&#x27;t discovered or done as well, and the author saw the prompt attention to their bug report. (The Rhombus thing has been going on much longer.)<p>&gt; <i>Do I want to wait 10+ minutes for my package to build in CI because some other package maintainer decided to pull in racket or racket-doc (which pulls in the entire big Racket distribution)?</i><p>Talk to the developer of that third-party package?<p>&gt; <i>Do I want to ship multi-gigabyte docker images because of the above kitchen sink package?</i><p>Talk to the developer of that third-party package, and there might be additional things you can do.<p>&gt; <i>Do I want to deal with being blocked due to not understanding how to use the less understood features of racket such as continuations, syntax-parse&#x2F;syntax-case macros, units&#x2F;signatures? You’ll want to know about all these things to write effective Racket code.</i><p>You&#x27;ll need to understand first-class continuations to work on all the Racket internals as a compiler developer. But I don&#x27;t recall ever seeing a non-internals use of that.<p>For the syntax extension mechanisms, you can learn that as-needed and at your own pace, because it&#x27;s for things that most languages can&#x27;t do (and does it better than languages that can). And you can definitely learn them incrementally, and start with the higher-level forms, which might just do what you need.<p>Units&#x2F;signatures are ancient, and you probably don&#x27;t need to use them. Just use the very nice module system (including submodules), and then decide whether you need more.<p>&gt; <i>Do I want to add business risk by writing a product in Racket? Does anybody work as an industry Racket coder at all? Would I struggle to hire more talent?</i><p>It&#x27;s probably needless additional risk&#x2F;unknown to use for business unless you have more or more people who are able to dig in and figure out technical stuff without Stack Overflow. (Though there are helpful forums, but you&#x27;ll need to rise to the occasion more often.)<p>And one of the the secret weapons of beloved fringe languages&#x2F;platforms is that they attract those mythical &quot;10x&quot; programmers on basis of technical&#x2F;aesthetic&#x2F;community merits rather than employability, so there&#x27;s more of them than there are great jobs using Racket...<p>&gt; <i>Do I…. yeah there’s more but let’s move on ;)</i><p>(End of the contiguous block, switching to sparse quoting.)<p>&gt; <i>Where did the racket-money mailing list go?</i><p><a href="https:&#x2F;&#x2F;www.neilvandyke.org&#x2F;racket-money&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.neilvandyke.org&#x2F;racket-money&#x2F;</a><p>It&#x27;s quiet most of the time, but picks up when a new person joins or there&#x27;s a question&#x2F;idea.<p>&gt; <i>Or really all the production users? I only found one production user.</i><p>There&#x27;s more than that, including doing spectacular productivity and importance, but there&#x27;s not many.<p>One thing the author of the blog post might be realizing is that the Racket professors are generally super-capable, they support production users like most professors couldn&#x27;t, they&#x27;ll provide technical support to any random person around the world. They&#x27;d love more commercial uptake, but that&#x27;s been far from their top priority.
评论 #36548642 未加载
评论 #36544894 未加载
MathMonkeyManalmost 2 years ago
It&#x27;s disappointing that this is the state of things from a &quot;working programmer&quot; perspective.<p>Racket is, as far as I understand, a research and teaching language, as well as a viable scheme.<p>I&#x27;ve used it for some [command line tools and side projects][1], but I never tried to deploy anything with it.<p>Maybe a new [Chez][2]-based (as Racket now is) scheme is needed: one with much of Racket&#x27;s nice syntax system, but focused on dependency management, targeted solely at &quot;production&quot; use, and other Serious Business Purposes.<p>Not it!<p>I&#x27;m not saying that Racket isn&#x27;t a serious platform -- far from it. But the author&#x27;s concerns, while expressed as a hot take, might be why Racket doesn&#x27;t see wider industry adoption.<p>Or maybe it&#x27;s a chicken and egg problem.<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;dgoffredo?tab=repositories&amp;q=&amp;type=&amp;language=racket">https:&#x2F;&#x2F;github.com&#x2F;dgoffredo?tab=repositories&amp;q=&amp;type=&amp;langu...</a><p>[2]: <a href="https:&#x2F;&#x2F;www.scheme.com&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.scheme.com&#x2F;</a>
评论 #36542520 未加载
评论 #36542662 未加载
评论 #36542534 未加载
akkartikalmost 2 years ago
I don&#x27;t use Racket much, but Python certainly frustrates me. So what I want to know is where people land when all these languages frustrate them. Builds taking too long seems like a perennial problem, for example.<p>(Currently I work in LÖVE, but programs there use at least 100MB, so it probably won&#x27;t be to OP&#x27;s taste.)
评论 #36542743 未加载
评论 #36542465 未加载
评论 #36542607 未加载
评论 #36542458 未加载
评论 #36542515 未加载
gus_massaalmost 2 years ago
[I&#x27;m biased, so I&#x27;d focus in some parts I disagree.]<p>&gt; <i>Do I want to iterate every 18 hours waiting for the pkgs.racket-lang.org build server to finish building my package? Then do it again because the build failed (my mistake, but now my users have to wait until later that week…)?</i><p>I agree it should be improved, but I think that deploying to the package system is something that happens not very often. The idea is to keep only a safe and stable version there.<p>&gt; <i>Do I want to write 4x the code (in Racket) because I forgot my secret move was actually all the pypi packages that I took for granted in Python?</i><p>It would be interesting if the author post in github a feature request for the 3 missing packages that are more painful. (3 is a good numbers to find someone else that care about one of them, more than 3 or 4 would be annoying)<p>&gt; <i>Do I want to wait 10+ minutes for my package to build in CI because some other package maintainer decided to pull in racket or racket-doc (which pulls in the entire big Racket distribution)?</i><p>Sometimes I use minimal-racket, and it&#x27;s this is annoying. Most people just use the main distribution so this is not a problem. IIUC the author cares about a small footprint, so it&#x27;s a special case. I use Ctr-C, but I guess there is a trick with raco pkg to do fix this automatically.<p>&gt; <i>Do I want to deal with being blocked due to not understanding how to use the less understood features of racket such as continuations, syntax-parse&#x2F;syntax-case macros, units&#x2F;signatures? You’ll want to know about all these things to write effective Racket code.</i><p>You can skip most of them to write effective Racket code.<p>I use continuations only as an emergency exit inside nested fors, no fancy stuff. (I agree the fancy stuff is weird.)<p>I think units&#x2F;signatures is almost deprecated. It will be there forever to keep backward compatibility, but I expect new code to use modules instead of units.<p>About macros:<p>If you are programing alone just use syntax-rule. syntax-case is not so difficult unless you want to do weird stuff. I&#x27;ve done weird stuff in the past, but five years later I regretted it.<p>If you are programing in a team, it&#x27;s important that the macros have good error checking, because otherwise in case of an error it will expand crap that will expend to more crap and after a few rounds of crap expansion the poor soul that is using it will get a unintelligible error about code they didn&#x27;t wrote. Here is where syntax-parse is useful, to ensure the initial code makes sense and expand only good code and give a good error reporting otherwise. syntax-parse is almost a separate DSL, so it&#x27;s a lot to learn. (You can write the same stuff with syntax-case, but syntax-parse automates a lot of stuff.)
评论 #36543926 未加载
zitterbewegungalmost 2 years ago
I tried using racket to do something useful and totally failed each time. Even if you are a single programmer making some kind of prototype I think we have gotten beyond the stage of picking a small language.<p>Also, doing a rewrite into an Ml style language is really strange when they should probably be trying to become more competitive with other languages by building more batteries for it or fixing fundamental problems that were outlined here.
评论 #36542925 未加载
评论 #36543262 未加载
JimmyRuskaalmost 2 years ago
Macros feel magical, this idea you can make your own language in no time so long as it&#x27;s s-expression based, and make your own personalized vocabularies, expression flows, fit to purpose. Personal computing at its best!<p>But from a working-with-other people perspective, imagine opening some code and finding random invented constructs you have to reverse engineer and step through. These days it seems everyone creates yaml or json files, and then implements some kind of declarative engine or interpreter to implement their DSL. This can be both easier to read and debug. For more complicated use cases you can tie it to a graph database that supports reasoning, instead of json&#x2F;yaml<p>Even so, is there really something that can be done with macros that can&#x27;t be done, just as elegantly, with simple state machines, or object composition style in other languages?
评论 #36543254 未加载
评论 #36544437 未加载
评论 #36544605 未加载
评论 #36553392 未加载
评论 #36544307 未加载
评论 #36554867 未加载
kazinatoralmost 2 years ago
There is no situation in which your language doesn&#x27;t impact your productivity to some degree, sorry.<p>When you&#x27;ve put 40,000 lines into the program, and your language is suddenly impacting your productivity more than you like, you can&#x27;t just drop all that and switch!<p>Your language has you hostage. &quot;If you don&#x27;t like the dent I&#x27;m putting in your productivity, go rewrite 40,000 lines in something else. Mouhaha!&quot;
kagevfalmost 2 years ago
&gt; Do I want to deal with being blocked due to not understanding how to use the less understood features of racket such as continuations, syntax-parse&#x2F;syntax-case macros, units&#x2F;signatures<p>I don&#x27;t know much about scheme or racket, but am aware that continuations is one of its distinguishing features. I&#x27;ve seen people praising syntax-case as a great take on macros. I&#x27;ve never heard of units&#x2F;signatures, though.<p>I know this was supposed to be a rant, but I wonder what drew the author to want to use scheme&#x2F;racket in the first place?
tryptophanalmost 2 years ago
Language ecosystem is more important than the language itself. Typing 5 lines of code because of fancy syntax is nice, but writing 20 doesn&#x27;t take a significant amount of time. What does take tons of time however is figuring build systems, packaging, distribution, debugging, editor support, documentation, community, libraries, etc...<p>I&#x27;m surprised no new languages focus on ecosystem. It is much less fun than making clever syntax I suppose.
评论 #36542482 未加载
评论 #36542584 未加载
评论 #36542459 未加载
评论 #36542497 未加载
评论 #36546746 未加载
评论 #36542512 未加载
评论 #36543062 未加载
kaushalvivekalmost 2 years ago
I had a professor at college who mandated Racket as the mode of learning for a software engineering course. I remember how Racket just ended up taking centre stage, figuring language-specific concepts and hacks out let the larger engineering concepts fade into the background.<p>I did not learn much in that course.
评论 #36543532 未加载
评论 #36543649 未加载
评论 #36543288 未加载
评论 #36543042 未加载
评论 #36543225 未加载
评论 #36543091 未加载
ashton314almost 2 years ago
&gt; Coding is a tool to get stuff done.<p>Sure, that’s <i>one</i> of its roles. Racket helps me think. Maybe I’m lucky, and work on genuinely novel problems where a malleable language beats libraries.<p>So, sure, the Racket ecosystem leaves much to be desired, but <i>getting stuff done</i> is only <i>one</i> of programming’s roles.
评论 #36558549 未加载
placesaltalmost 2 years ago
There&#x27;s a live coding talk by John Carmack where he uses Racket for making small programs for the Oculus:<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ydyztGZnbNs">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ydyztGZnbNs</a><p>He seemed happy enough with the language.
soulbadguyalmost 2 years ago
Some good points, but i find the tone a bit off.<p>I have been eyeing racket for a while now, but could never quite make the jump. Racket (the programming language) has definitely a lot of potential, but i do believe the academic side of it and the focus on the &quot;build your own language&quot; part might be an impediment to racket growth.<p>If i was to suggest some stuff :<p>- Clearly split Racket (and typed Racket) the language, evolution of scheme and Racket the PLT framework use to build and construct new languages. Racket &#x2F; typed Racket should focus on more production&#x2F;libraries for regular programmer - More examples&#x2F;libraries&#x2F;package not directly related to PL and PL teaching. Create a website solely for Racket&#x2F;typed racket, with the academic part. - DrRacket always felt and looked alien to me. I can&#x27;t really judge the feature set, but having vscode as the defacto IDE i think would be it more welcoming - This one is will definitively be controversial but introduce a &quot;curly brace&quot;&#x2F;C style syntax for Racket. Something implemented at the reader level. Same semantic&#x2F;runtime behavior, and a reader&#x2F;printer to go between Racket and {C|rust}SyntaxedRacket.<p>That&#x27;s a lot of effort, so why do this ? I believe the world is looking for a better python. There is a lot of contender right now (julia, nim , etc... etc...). I think racket should also throw their hat in the ring.
评论 #36543348 未加载
评论 #36543632 未加载
latenightcodingalmost 2 years ago
Something that I find a little concerning about Racket is that AFAIK there are no alternative implementations. (Clojure and Common Lisp have a couple). Why is that? is it too complex?
评论 #36542995 未加载
评论 #36543068 未加载
zelphirkaltalmost 2 years ago
Some of the points are probably valid. But some I do not see as quite so valid:<p>Many other deployments work similarly. Make a docker container and put it anywhere. Are Racket docker containers necessarily that much bigger than lets say Python ones or GNU Guile ones?<p>Racket is packaged in GNU Guix btw., even, if I have had mixed experiences with the package, it should be mentioned. So someone already succeeded in packaging it in the package manager, that once was derived from Nix.<p>&gt; Do I want to write 4x the code (in Racket) because I forgot my secret move was actually all the pypi packages that I took for granted in Python?<p>This really depends on what kind of code you are writing. When I wrote some Racket programs, I used mostly built-ins or perhaps 1 or 2 dependencies. Depending on the project, maybe one needs more of those dependencies and writing them oneself would be too much work. But for simple dependencies that are easy to write oneself, I wouldn&#x27;t want to use a dependency from PyPI.<p>&gt; Do I want to deal with being blocked due to not understanding how to use the less understood features of racket such as continuations, syntax-parse&#x2F;syntax-case macros, units&#x2F;signatures? You’ll want to know about all these things to write effective Racket code.<p>Hm, I don&#x27;t know whether you want to. Do you want to be a capable programmer understanding more language concepts, being able to apply them perhaps in your next project or when learning your next language? Do you want to be able to express things elegantly than possible in Python for example? Do you want to know Scheme things? If not then OK, we all make our choices. I personally don&#x27;t think it is good to avoid learning about something like continuations and stumble on without such knowledge as a programmer, but in more mainstream languages it probably is sufficient. However, one can also write lots of effective Racket code without going into macros. One does not have to follow the idea of having to make a language.<p>&gt; But then the real hard truths started to appear. I was losing a lot of productivity. The productivity losses were incremental but certainly slowed down my velocity significantly over the last seven years. Sure the language has a lot of wonderful features, but there’s more to a good programming language than well, its programming language.<p>This is probably the most important point raised.<p>I hope though, that people who run into any shortages with Racket consider building the thing they are missing, if they are able to, to add to the ecosystem and to avoid the next person running into the same thing lacking. If no one ever writes their own, we will only ever stick with the status quo in terms of programming languages. (And fortunately people do write their own often.)
评论 #36543637 未加载
whalesaladalmost 2 years ago
higher resident memory is not ideal, but is it a dealbreaker?<p>Anyhoot - I think clojure is the best lisp there is right now, but for better or worse it is tied to the jvm and seems to be stagnating.
评论 #36542510 未加载
评论 #36542612 未加载
noriralmost 2 years ago
It is surprising to me that academics would not think that it is worth optimizing RSS for hello, world.
patrecalmost 2 years ago
Life lesson: don&#x27;t waste 7 years of your life and and personal growth on some weird fringe language, you will not get them back. It can pay off to make a serious commitment to a non-mainstream technology, but basically only if it allows you to do some <i>very concrete</i> things that give you a big competitive advantage and that you could not reasonably achieve otherwise. Or if you are both unusually good at predicting the next hot thing, and the timescales are short enough. Racket is not a good bet in either regard (even if it&#x27;s a great language to learn certain concepts).<p>All the lost productivity the poster is bemoaning could have gone into mastering hard and useful skills instead and these things compound.
评论 #36543616 未加载