Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
junke
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
17 ms
·
121.
▲
by
junke
8y ago
Every value in CL is an instance of class. Some of those classes are built-in classes, which are restricted for performance reason. You do not inherit from Int in Scala either, since it is marked as "final", as far as I know.
122.
▲
by
junke
8y ago
> a large part of the CL community treats the spec a bit like a sacred text That's not my experience. I'd say that people know what the CL spec currently is, love its stability, and might fear what it could become after an &quo
123.
▲
by
junke
8y ago
I typed "Eldritch abomination and cat" and I was not disappointed.
124.
▲
by
junke
8y ago
And all of this because originally, the Imperial Roman had no punctuation.
125.
▲
by
junke
8y ago
NULL pointers
126.
▲
by
junke
8y ago
Later, the same day, the exchanges goes: - Re. - Re. Some people hate "Re".
127.
▲
by
junke
8y ago
But then how do you shadow previous bindings? let f x = if (x == 0) then 0 else (f x)
128.
▲
by
junke
8y ago
isOdd and isEven don't work with negative numbers.
129.
▲
by
junke
8y ago
The first time I saw it, I was suprised to learn that the evaluator is based on text transform: evaluation is a fixpoint where basically each match of "{[^}]*}" is replaced by its evaluation. The regex ensures values at the deepes
130.
▲
by
junke
8y ago
Organic does not mean random.
131.
▲
by
junke
8y ago
Thanks for the explanation. I see now that X is read at different rates from different consumers. You need to have a buffer that might grows infinitely in the general case (I remember reading about CSDF, cyclo-static dataflow graphs, where
132.
▲
by
junke
8y ago
> This issue would also appear if we forced stream transducers (processing nodes) to output a fixed number of value at each invocation: it suffices to let S repeat each value of X twice, i.e., interleave X with X. I don't understand
133.
▲
by
junke
8y ago
You could also introduce a "locally" form (for those wondering: http://www.lispworks.com/documentation/lw61/CLHS/Body/s_loca... )
134.
▲
by
junke
8y ago
My problem with the slogan is that it has become a catch phrase for those who either haven't read the original article, or have read it and either have forgotten what it really talked about or never understood it in the first place. A
135.
▲
by
junke
8y ago
> ... were about. are about.
136.
▲
by
junke
8y ago
Honestly curious, how do you expand a "x := y" expression into an expression that returns y and affects x as a side-effect?
137.
▲
by
junke
8y ago
That's why I try to correct people when possible and point newcomers to Practical Common Lisp (Seibel).
138.
▲
by
junke
8y ago
I tend to find it very easy to debug CL code. In fact, CL is designed to be introspective: "inspect", "trace", "break", "disassemble" and "step" are part of the language. Also, Common Lisp i
139.
▲
by
junke
8y ago
Apparently some implementations have tail-recursion modulo cons. You spot a tail-recursive function where the result is placed in the cdr, and you compile your code so that it chains cells by calling "set-cdr!" For example (using
140.
▲
by
junke
8y ago
"recur" can be used for self-call in tail position, but does not help with the general case where you may want to jump to another function.
141.
▲
by
junke
8y ago
Yes, but the "can't" really is a "shouldn't".
142.
▲
by
junke
8y ago
:) For comparison, reader variables in Common Lisp: CL-USER> (setf *print-circle* t) T CL-USER> '#1=(person . #1#) #1=(PERSON . #1#)
143.
▲
by
junke
8y ago
{ person: self.person, } RUNTIME ERROR: max stack frames exceeded. { "self": "a", b: self.self } STATIC ERROR, expected token identifier but got self Looks good.
144.
▲
by
junke
8y ago
The first 380 lines are used to change the Common Lisp environment so that it can read and evaluate the two different versions that follows. There are comments that add information about the original page numbers, etc, but roughly speaking,
145.
▲
by
junke
8y ago
See https://github.com/jeffshrager/elizagen/blob/master/cosellel...
146.
▲
by
junke
8y ago
The only difference I see is if you need recursive local functions, which is harder (but not impossible) to do with anonymous closures.
147.
▲
by
junke
8y ago
> Sure: maybe the first read happening concurrently with the write won't read true yet but surely the next one or the one after must? You are expecting the read operation to be done either before or after the write, which would be t
148.
▲
by
junke
8y ago
It is possible that you are studying modal logic. https://billwadge.wordpress.com/2015/09/30/i-deduce-you-are-...
149.
▲
by
junke
8y ago
Common Lisp multiple values are not used for error handling as far as idiomatic code is concerned. The also work differently, being symetrical to optional parameters.
150.
▲
by
junke
8y ago
> First, you're not incurring a large runtime penalty How large, and why? Only when exceptions are thrown, or also during the happy path? From what I understand, with Monads the code check errors after each expression (like in C
More ›