<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: elibarzilay</title><link>https://news.ycombinator.com/user?id=elibarzilay</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 22 Oct 2026 07:47:54 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=elibarzilay" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by elibarzilay in "Why I haven't jumped ship from Common Lisp to Racket just yet"]]></title><description><![CDATA[
<p>I don't know what this refers to, but it doesn't ring a bell.  The most I might have said is that the community in general is not too interested; but personally, this kind of dynamic interaction is something that I very much appreciate.  In fact, when I implemented xrepl (which is now the default when you start racket) being able to modify code inside modules was one of the main goals.  The only reason I didn't do something like that for Emacs is that my own use of CL/Scheme variants in Emacs was always very simple, but I actively encouraged people to do something similar for Emacs -- and Geiser/Racket-mode are two serious Emacs packages that actually do that kind of interactive use.</p>
]]></description><pubDate>Sun, 10 Sep 2017 07:32:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=15211179</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=15211179</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15211179</guid></item><item><title><![CDATA[New comment by elibarzilay in "Meta-syntactic programming with Racket: string interpolation"]]></title><description><![CDATA[
<p>You could have used the scribble reader (the @-expression syntax, not to be confused with the full documentation system).  But you'd also then find that there is a more robust way to get what you implement with a simple definition:<p><pre><code>    #lang at-exp racket
    (require racket/date)
    (define s string-append)
    (displayln @s{Current date&time: @(date->string (current-date) #t)})</code></pre></p>
]]></description><pubDate>Wed, 03 May 2017 16:54:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=14257614</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=14257614</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14257614</guid></item><item><title><![CDATA[New comment by elibarzilay in "What Killed Smalltalk?"]]></title><description><![CDATA[
<p>That's the first time I hear of Racket being accused of being too small...  Looking at <a href="http://perldoc.perl.org/index-functions-by-cat.html#Functions-for-SCALARs-or-strings" rel="nofollow">http://perldoc.perl.org/index-functions-by-cat.html#Function...</a> I count about 30 functions (including regexp ones); looking at the racket page I count over 50.<p>Also, I once got the snow yellow at over 3 meters.</p>
]]></description><pubDate>Sun, 23 Aug 2015 10:27:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=10105188</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=10105188</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10105188</guid></item><item><title><![CDATA[New comment by elibarzilay in "What Killed Smalltalk?"]]></title><description><![CDATA[
<p>From <a href="http://racket-lang.org/new-name.html" rel="nofollow">http://racket-lang.org/new-name.html</a> -- "Racket is a Scheme".  The name change was about very different things than "basic scheme routines", and it would be hard to find any basic scheme implementation without any.</p>
]]></description><pubDate>Sun, 23 Aug 2015 10:18:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=10105171</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=10105171</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10105171</guid></item><item><title><![CDATA[New comment by elibarzilay in "Racket v5.3.2"]]></title><description><![CDATA[
<p>Not just now -- this library has been up for a number of years.</p>
]]></description><pubDate>Sat, 02 Feb 2013 15:10:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=5156128</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=5156128</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=5156128</guid></item><item><title><![CDATA[New comment by elibarzilay in "The Nature of Lisp"]]></title><description><![CDATA[
<p>Right.  Perhaps a better way to summarize this is that:<p>* Lisp made the first giant step of having code representable as data for meta-programming, and chose sexprs to do so<p>* Common Lisp came later, and made the important step of <i>requiring</i> this representation, which means that in every CL implementation you're required to have the code as data aspect<p>* But the flip side of this is that CL hard-wires <i>just</i> sexprs, it forbids an extended type, which means that you can't get anything more than sexprs (without resorting to "extra properties" hash table tricks)<p>* Meanwhile, Scheme (R5 and others that have only `syntax-rules') took a step back by specifying only rewrite rules which can be implemented in any way an implementation chooses<p>* But some Scheme implementations <i>did</i> use sexprs, but since they need to encode more information (lexical context) they extended them into syntax values (note that some Scheme low-level macro systems try to present users with a simplified interface where user code sees just the sexprs)<p>* Later on, Racket took further steps and enriched its syntax values with "more stuff"<p>* R6RS got closer to this too, by adopting the syntax-case system (but some people had issues with "wrapping" symbols, since you can't do that with the hash table trick)<p>* And finally, R7RS (the "small" version) is going to take a step back into the R5RS days.  (And in the "big" language it looks like they'll adopt one of these systems that try to keep the sexpr illusion.)</p>
]]></description><pubDate>Tue, 13 Nov 2012 13:23:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=4777797</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=4777797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=4777797</guid></item><item><title><![CDATA[New comment by elibarzilay in "The Nature of Lisp"]]></title><description><![CDATA[
<p>You should be careful here, and not lump together "many Schemes" and "Racket" (or other specific Scheme implementations).  The thing is that Scheme standards have traditionally avoided tying the language with a macro system that requires some specific representation for syntax -- giving you only the simple rewrite rules system means that you don't actually need to know that representation.<p>In Racket, OTOH, there are definitely syntax objects with enough functionality to write code that handles them, and I suspect that you know that.  The question is whether this should be considered "homoiconic" or not, but this is a kind of a subjective issue, since at an extreme, I can say that all languages that have strings are homoiconic.  Perhaps you need more from the language to make it so, maybe eval, or maybe actually require it to have compile-time procedural macros?  In any case, Racket will have all of the features that CL does, so it is arguably at least "as homoiconic" as CL is.  But in fact, it has more than just s-expressions: these syntax objects are basically sexprs + a bunch of stuff like source location and lexical context, so in fact they represent <i>more</i> than what lists in CL do.  Should I then conclude that Racket is more homoiconic than CL?  And this is not a tongue-in-cheek argument: in fact, many CL implementations are aware of the limits of sexprs as good representation for code, and add things like source location via a backdoor, like a hash table that maps pair objects to additional properties.  Racket does that in its basic syntax representation so IMO it's fine to indeed consider it more homoiconic.  And I also say that for the addition of lexical context information -- that's something that is not only included in the Racket syntax object, it's something that you just <i>cannot</i> get in CL, so if homoiconicity is being able to have a high-level representation of code (unlike raw strings), then this is another point where Racket wins the pissing context.<p>Finally, it's not that all "many Schemes" are limited as described above -- there are many of them that have their own macro systems with similar syntax values, and that includes Schemes that follow R6RS since that dictates syntax-case which comes with them.  It just happens that Racket is has been traditionally running at the front lines, so it's more advanced.</p>
]]></description><pubDate>Sun, 11 Nov 2012 22:02:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=4770722</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=4770722</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=4770722</guid></item><item><title><![CDATA[New comment by elibarzilay in "Show HN: PDF parsing in Racket, my weekend project"]]></title><description><![CDATA[
<p>Um, when I write code in Typed Racket (and I have a whole course using it), the code tends to be much more similar to ML than to conventional Lisps.  When I write code in Lazy Racket, it is somewhat like a dynamically typed version of Haskell, and unsurprisingly not too similar to other Lisps.  Same goes for a whole bunch of stuff.  Another random example: there's a whole library of functional data structures that is based on Okasaki's book.<p>In fact, if you want to focus on macros as some kind of a driving force for code -- then it that exact aspect (a) macros in Racket can be <i>very</i> different than macros in other Lisps; (b) more than that, there are many kinds of macros in Racket that you <i>cannot</i> write in those Lisps.  As for digging on-line for crossover code from other Lisps that finds its way into Racket: you'll obviously find a lot of Scheme code, but practically nothing from other Lisps.  The bottom line is that the syntactic "lots of parens" similarity is an extremely shallow one.<p>Bottom line: Racket is roughly at the same level of a "functional programming language" as ML etc, certainly more than Python and Ruby where side-effects are embraced much quicker.  Like you said, "even have equivalents of map..." -- whereas in Racket these kind of functional/non-destructive operations are expected.  (For example, the Racket GC is tuned to perform well when allocating lots of short-term objects, something that is a direct result of FP being the most dominant style.)<p>And yes, I know that you're not bashing Lisp -- you're just quick to lump all Lisps on the same pile, and reach the obviously bogus conclusion that first-class syntax is <i>the</i> thing that drives code.  (That's a point that is subjectively obvious to me, as someone who has been in this part of the PL world for more than two decades.)  "LISP" is, BTW, just an outdated spelling, period.  It's true that in CL circles "Lisp" is taken as implicitly meaning "Common Lisp", but in the same circles "LISP" is taken implicitly as "an outdated spelling for Lisp, therefore Common Lisp" unless you're one of the old farts whose making a reference to LISP 1.5 or something as ancient.</p>
]]></description><pubDate>Tue, 15 May 2012 14:38:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=3976762</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=3976762</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=3976762</guid></item><item><title><![CDATA[New comment by elibarzilay in "Show HN: PDF parsing in Racket, my weekend project"]]></title><description><![CDATA[
<p>All of this sounds like you're one of these people who see parens and run away screaming "LISP!".  Yes, the default Racket syntax uses S-expressions, but concluding that it's in some way lumped with Emacs Lisp is extremely wrong.  And yes, Racket has syntax that can be tweaked using macros -- but it's a far stretch to go from this to that being the thing that drives all Racket coding.  After all, OCaml now has CamlP4 as something that is an integral part of the language -- does that mean that meta-programming is now the thing that drives OCaml coding???<p>Another point: yes, Racket programmers know and use tail-calls, but that has nothing to do with "the looping constructs provided in the library" since those are implemented in terms of the same facility.  The existence of these loops is therefore not making the language any less functional than the fact that you can implement a while loop in Haskell.  The bottom line is that Racket is as functional a language as the interpretation of the term was before Haskell kidnapped it and turned it into some religious point.<p>(BTW, if you want to bash lisps, do yourself a favor and drop the all-caps "LISP" -- it immediately demonstrates the kind of limited knowledge you have on it.)</p>
]]></description><pubDate>Sun, 13 May 2012 21:23:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=3968379</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=3968379</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=3968379</guid></item><item><title><![CDATA[New comment by elibarzilay in "Show HN: PDF parsing in Racket, my weekend project"]]></title><description><![CDATA[
<p>These days Racket is on a similar performance level as many lisps, and it also has <i>three</i> kinds of concurrency for you to choose from.</p>
]]></description><pubDate>Sun, 13 May 2012 15:13:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=3967194</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=3967194</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=3967194</guid></item><item><title><![CDATA[New comment by elibarzilay in "Why HN was slow and how Rtm fixed it"]]></title><description><![CDATA[
<p>Racket now includes a new facility -- "features" -- which are essentially a lightweight OS-level thread.  There's also another -- "places" -- which is a more separated heavy threads (closer to a new process), but that one is not enabled by default.</p>
]]></description><pubDate>Mon, 24 Jan 2011 03:35:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=2134146</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=2134146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=2134146</guid></item><item><title><![CDATA[New comment by elibarzilay in "Racket"]]></title><description><![CDATA[
<p>Not a standalone book, but there's a guide for doing practical things: <a href="http://docs.racket-lang.org/more/" rel="nofollow">http://docs.racket-lang.org/more/</a></p>
]]></description><pubDate>Tue, 08 Jun 2010 01:21:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=1412681</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=1412681</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=1412681</guid></item><item><title><![CDATA[New comment by elibarzilay in "PLT Scheme is a Racket"]]></title><description><![CDATA[
<p>5.0.0.1 is the version of the repository -- it's a development version that should not be considered stable.</p>
]]></description><pubDate>Tue, 08 Jun 2010 01:17:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=1412675</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=1412675</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=1412675</guid></item><item><title><![CDATA[New comment by elibarzilay in "PLT Scheme is a Racket"]]></title><description><![CDATA[
<p>That's up to the linux packagers.  It took them a while to settle on "plt-scheme" in the past, so it will probably take some time now too.</p>
]]></description><pubDate>Tue, 08 Jun 2010 01:16:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=1412673</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=1412673</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=1412673</guid></item><item><title><![CDATA[New comment by elibarzilay in "Why HN is slow lately"]]></title><description><![CDATA[
<p>PLT Scheme is not "interpreting" code.  More than that, Arc
adds a bunch of huge overheads that could make things
<i>substantially</i> faster.  I had some patches lying around that
made things around 4-5 times faster (including the news
server).</p>
]]></description><pubDate>Fri, 13 Mar 2009 02:06:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=514417</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=514417</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=514417</guid></item><item><title><![CDATA[New comment by elibarzilay in "What caused that outage"]]></title><description><![CDATA[
<p>Something that could be done for now, is to write a piece of
mzscheme code that "marshalls" the data in (utf-8-encoded)
byte-strings.  Assuming that most of the 2gb is made of
strings, and that these strings are mostly ascii, this
should reduce the consumption by close to a factor of 4.<p>(I can imagine an interface that is transparent at the arc
level, where are strings are just passed to the backend and
retrieved from it, and the backend converts them to and
from byte strings.  Later on it could change to use a FS or
a DB or whatever.)</p>
]]></description><pubDate>Fri, 13 Mar 2009 01:59:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=514410</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=514410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=514410</guid></item><item><title><![CDATA[New comment by elibarzilay in "What caused that outage"]]></title><description><![CDATA[
<p>In general, 3m is performing very well, much better than the
conservative collector plt used to use by default (the boehm
gc).  As for the jit: many of the benefit of the jit are
irrelevant in Arc since it doesn't use mzscheme modules; this
is in addition to using an old mzscheme version, when the jit
was rather new -- many many improvements were done since then.</p>
]]></description><pubDate>Fri, 13 Mar 2009 01:51:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=514402</link><dc:creator>elibarzilay</dc:creator><comments>https://news.ycombinator.com/item?id=514402</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=514402</guid></item></channel></rss>