> foreign teachers who are qualified AND are happy to teach up there
But are they? Or are they just willing and here for the money and foot in the immigration door? Sincere question, though I have negative views of the whole H1B thing in general (not a US national, though).
At a general level, it is a simple fact that there are more qualified/happy candidates globally than there are just in the United States. For the second part, no, I assume that money/opportunity are WHY they’re happy to teach up there. If that’s the motivation that keeps qualified teachers from turning to alcoholism or suicide, that’s a good thing for the kids.
Maybe not a legally smart move, but morally... when was it signed? Perhaps way before some EU countries decided to stop enforcing their borders beyond the performative level? And since these agreements basically force countries (especially rich countries with socialist systems) to somewhat share the burden of that choice they didn't make, I don't blame them in the least.
These agreements do not force countries to share that burden.
Freedom of movement for EU citizens. Migrants and asylum seekers don’t have the right to live and work in Switzerland because of our EU agreements.
A migrant or asylum seeker living in Germany has 0 right to move to CH.
We do have some asylum obligations from the Dublin accords and from global human rights laws, but those we can regulate ourselves separately anyway. EU doesn’t care. Countries within EU do it already.
An embarrassingly large number of epubs have absolute no care put into formatting, in my experience. That and how do I get my "old book paper smell" fix and those beautifully illustrated hardback covers neatly lined on my shelves?
Most of the folks I caught pushing "changes" as a commit message are now letting AI write their commit messages for them. It has been a massive improvement.
Other than that, I agree, CL is baroque yet needs some hole filling here and there.
> Lisp: everything is a list
But that's wrong. Not even a little. Unless you mean LISP 1.5...
> Too much syntax
Funnily, I'm mostly okay with the new vector/set/hash-table literals, my big problem and that of some other people is the use of vectors in macros/special operators instead of lists. `(let [a b] ...)` instead of `(let (a b) ...)` is _not_ okay.
Clojure’s abstraction is a bit more far-reaching than Common Lisp’s SEQUENCE, implemented as interfaces rather than types.
A Clojure sequence is anything “seqable” (either implements the Seqable interface, or special case handling for host platform collections), not just lists and vectors. Hash maps, sets, Java Iterables, etc. are all seqable and work with the same standard collection functions.
e.g. you can `(map (fn [[k v]] …) {:a 1 :b 2})`, rather than needing a separate MAPHASH function.
> `(let [a b] ...)` instead of `(let (a b) ...)` is _not_ okay
it is however quite consistent, clojure uses vector form for most macros that require a "control" form before a "data" form: argument list in defn, names list in let, iteration descriptors in for, etc. you get used to consistency quite easily.
In CL and Scheme, it's (let ((var1 val) (var2 val)) body...).
So parentheses are used for grouping and function/macro application.
In Clojure, parens are just used for application, so you have e.g.
(let [var1 val var2 val] body...), or (defn foo [x] ..) or (cond testa 1 testb 2 ...).
It takes some getting used to, and I do wish Clojure would do something more like
(let [[var1 val] [var2 val]] ... .. though of course then you'd have to figure something else out for destructuring.
Just saying "macros" is a bit reductive: in CL, you have access to the full language at (read) parse time, compile time and runtime. Said macros also mean that logical OR/AND short-circuiting isn't a compiler black box, you can implement such behaviour easily yourself.
------
The syntax is actually a big pro for a lot of people. I love its streamlined look that basically reads like Python once you let your IDE indent properly and learn to see "through" the parentheses (CL, Scheme).
The original language where everything is an expression and it shows. Where Python still needs an ugly ternary and made match a statement, Lisp has had the perfect IF and COND since the dawn of time.
Symbols are still a cool and useful concept that almost no other language I know of got.
The numerical tower - despite some holes - is amazing. Built-in rationals and "correct math" as sane default (i.e. 1/2 not returning 0) never get old.
------
And if you let me rave about CL specifically (e.g. DECLARATIONs as "#pragma done well", restarts, CLOS/MOP, runtime READ/COMPILE, etc...), there are a lot of cool features barely copied anywhere that'd improve other languages, but these aren't part of "what make Lisp Lisp".
But are they? Or are they just willing and here for the money and foot in the immigration door? Sincere question, though I have negative views of the whole H1B thing in general (not a US national, though).
reply