Re:Interview Gone Wrong
by Aachen on Monday November 04, 2024 @06:18AM
(#42040520)
I have no idea what this does or if you are joking. Could use some explanation
[ Parent
| on HN ]
In Lisp, you put the "operator" first, so instead of
2 + 3 + 4
you write (+ 2 3 4)
This is nice for associative operations like + or *, very very very slightly confusing for - and /---
You use the same style for comparisons, so instead of
2 == 3 == 4
you write (== 2 3 4)
To support the fist "infix" syntax, you need some magic in the == operator. But the second "prefix" syntax is totally natural and you need no magic in the parser or the operator.> very very very slightly confusing for - and /
It's fine if you DNF it:
(- a b c) => (+ a (- b) (- c))
(/ a b c) => (* a (/ 1 b) (/ 1 c))I knew that Lisp does this operator first thing, it's everything around this that I'm not familiar with. What does ; do? Is the => an arrow or greater than or equal to? What is t? Do I guess correctly that most-negative-fixnum is like INT_MIN?
The semicolon is Lisp syntax for comments. T is the way you write true in Lisp. Most-negative-fixnum is the most negative number Lisp can represent without promotion to bignum (so it can be int_min if int is roughly equivalent to size_t).
In the Lisp family of languages these comparisons are not implemented as operators, but functions.
The functions behave like:
= all the same
/= all different
< monotonically increasing
> monotonically decreasing
<= monotonically nondecreasing
>= monotonically nonincreasing
Also * is product and + is sum.