Show newer

@amszmidt @louis@emacs.ch Scheme is *a Lisp* in the sense that it is a dialect of the "Lisp family" of programming language.

Scheme is *not Lisp* in the sense that it is not a direct successor of Lisp 1.5, MacLisp, Interlisp, ..., Common Lisp.

Obviously, the meaning of the word Lisp in "it is a Lisp" and "it is Lisp" is different.

@mousebot @schmudde @evanwolf

Lisp syntax is weird, but: it is incredibly extensible, hence you can add your own domain specific language or paradigm; you can navigate quickly in Lisp code; with time it becomes readable.

Nowadays, Clojure is used successfully in many commercial projects.

@SallyStrange@strangeobject.space @freemo

> this is how fascism wins. By convincing people like you that organic expressions of outrage at fascism ARE fascism.

Or maybe this is like totalitarianism wins: when you believe that a discussion about Trump is important because it will affect the fate of USA.

If you read 1984 of Orwell, there are suspects that all these wars between Democratic Party and Republican are mainly a weapon of mass distraction. Take a rather genuine Democratic president as Obama. Did he changed the finance system, despite the 2008 crisis and corruption? No. Did he really reduced the outrageous costs of healthcare system? No.

Something after an election can change, but I suspect that the "big-picture" is already decided. Hence, a figure as Trump is useful because he is a clown, he can grab the attention, and you stop thinking to the big picture.

@freemo In comedy it can be called the "Aubrey Plaza strategy": she is weird but constantly on the edge between funniest and crazyness 🙂 BTW, it seems that this is her attitude also in her real-life.

@freemo I'm not an expert but it is probably a case of mixed strategy.

If you read the example in this page, it fits a lot of real-world cases:

en.wikipedia.org/wiki/Strategy

@freemo @SteelFolk

@freemo Yes I see your point.

Maybe we can switch to public bathrooms divided by functionality. A bathroom reserved for people with disabilities, then another one with privacy guarantee internal spaces, and finally a "quick and cheap" bathroom with private toilet but shared sinks. In normal situations, the more comfort and privacy you want, the more time you had to wait.

@SteelFolk @freemo

@freemo proposed the Neanderthal approach 🙂

I'm joking on this, because an apparently simple question about who can enter a female bathroom or not, in practice has no a real answer. It is nearly impossible to find a rule able to take in considerations all border-lines cases. You can partition the binary cases, but when you approach the border-line, the binary gender became a multi-factor, open-set of values. You can discuss forever.

I will end with a provocation: because there are no discussions about who can enter the male bathroom? :-)

@SteelFolk @freemo

> "what would the Nazis have done?"

Bingo! We are in democracy. Every bathroom needs an entrance podium. After a short public speaking where you introduce yourself, the others inside the bathroom can vote and decide if you can use the bathroom. :-)

@freemo a man dressed and acting like a woman, also if "suspecting masculine", his for sure more embarassing and awkward in a man bathroom. So I vote for "appearance" wins over "genitalia".

But, this is a purely binary related problem: if you go to the bathroom alone you are a man, if you go with your friend, you are a woman. :-)

@freemo I'm using it. From a technical point of view, it seems to me a very robust technology, but from a philosophical point of view, if you are serious at DevOps, probably there are better solutions.

If you have some legacy service that had to run inside a normal Linux distribution, then LXD allows to create a guest distro that is very light, because behind the hood it runs as a Linux container of the host distro. So you have a very cheap distro to use for: testing porpouses; local and disposable environments to give to students; legacy services administered in the old way.

Obviously if a service is important and it requires some resources, it is better to install on a distinct VM, instead of using LXD.

A modern DevOp environment, built from scratch, I doubt that it should follow the LXD approach. It is mainly for services that for some reasons are managed in the old way, and it does not make sense to host on distinct VMs. So a very narrow use case.

MZan boosted

I opened one of my cookbooks for the first time in a long time and found this old flyer for a Tech Workers Coalition event at Omni Commons in 2018. Time is weird

@rml at best of my (limited) knowledge, I think that after some time you understand if you prefer Scheme or CL. CL is a little more on the "hacking side", while Scheme is a little more on the computer-science/elegant side.

The most advanced thing I tried with Racket is some code using the Nanopass compilation framework. I were impressed. Also Typed Racket is very good and readable.

But for some inexplicable reason, I feel more productive and happy using CL. It is less elegant, but it is so much powerful and production-oriented.

So, I will not read your book, because time is limited and I had yet dedicated some time to Scheme.

@rml regarding `nil`: in CL it stays for the empty list and for the false value. There is no false value in CL. There is no true value in CL. Everything that is not `nil` is considered a true value.

To be sincere, it is an hack respect the elegance of Haskell algebraic approach. But, it is a convention that fits very well in the CL code and its usual semantic. For example `(or (car some-list) 0)` return the first non-nil value. It seems an hack like 0 and 1 that in C is false and true, but instead it allows to write very composable code. So it is a powerful and elegant hack.

On all other points, or I agree with you, or I trust you, because you seems more knowledgeable than me.

@rml regarding exception handling, the correct name is "Condition System". It is an approach more similar to Erlang, where you have common code for intercepting and managing certain classes of errors in an uniform way.

I didn't understood if the limitation about Coalton are regarding run-time errors, or compile-time errors. The condition system is only about management of run-time errors or run-time exceptional conditions.

It can be used also for implementing effects, when it is sufficient a manipulation of the stack. Otherwise Scheme continuations are more powerful.

@rml I'm not an expert of CL, and I only played some weeks with Racket. So I'm not an expert of Scheme too.

BTW, my 2cents are that regarding CLOS, it is very complete and it is a standard of CL. So there are a lot of CL libraries using it, and it is fully integrated in the development experience.

If your OOP code is slow, you can optimize the way objects are managed, and slots are stored in RAM, using MOP. For example with MOP you can store the coordinates of point objects in a compact array (i.e. row-store), despite you access them like normal objects.

@Romaq @freemo many thanks: as a true procrastinator, I postponed the reading of these important toots about procrastination and I started instead to work! Someday I will read them, promised!

@rml CLOS and MOP are better respect many Scheme OOP libraries.

Generic functions are used also in contexts different from OOP.

CL macros are easier to write.

The error and exception handling of CL is very powerful and useful.

But the real answers for me are these:

1) CL live coding (i.e. interactive REPL) is very fun and addictive

2) there are many CL compilers with different characteristics at run-time accepting the same CL code, and that you are sure that you can use in production. For example with ECL you can produce C-friendly libraries.

3) a minor detail, but I like the fact that "nil" stays for false, and every other value for "true". The code become shorter.

MZan boosted
Show older
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.