charje 3 months ago • 100%
Visual voicemail
charje 4 months ago • 100%
- Some Dell that belonged to the school
- JCreator
- Java
- about 5
- Racket
- Emacs 7.Haskell & Common Lisp
- Common Lisp
charje 4 months ago • 100%
It is fun to make a cl:loop replacement. It is definitely overdone though. Lately I have been using https://git.sr.ht/~charje/loop to much enjoyment.
charje 5 months ago • 100%
For point 7 see: https://github.com/lem-project/async-process/issues/21
I have it ready to be packaged other than that.
charje 6 months ago • 100%
There is https://github.com/jscl-project/jscl for JavaScript. I think it is not quite done though, so you will just have to try it.
charje 7 months ago • 100%
I wonder what happens when an elevator panic!
s.
charje 7 months ago • 100%
I have never received a spam email on the email that I use for guix patches.
charje 8 months ago • 100%
Isn’t this (in-package ...) form just a namespace feature?
It is not only a namespace feature; it is first class. You can use find-package
to fetch a package object and pass it around and manipulate. It looks like this can be done to some extent in C# as well.
For C# namespaces, exports carry over to different uses of the same namespace, but using
statements go out of scope at the end of the current namespace use. That signals to me that imports are not related at all to namespaces. It seems that C++ acts similarly. From what I can tell Both C# and C++ allow for fully qualified names without any sort of import.
I have to agree with you about Rust: they goofed it up my trying to make too many rules about which libraries and symbols can be used in which places.
There are many things to like about Common Lisp packages. In everyday programming, I really like being able to define one or more packages in one file then just have a `(in-package package-name)` at the top of other files opposed to having sometimes hundreds of lines of imports. Some programming languages are worse than others, but no other programming language that I know of allows one to keep imports in a totally different file. The real point of this post is to talk about a specific scenario that reveals in interesting interaction between asdf systems (libraries), symbols, and macros. A conversation about packages almost always involves talking about symbols. Here is the situation: there is a library, A, that implements some very useful computations. The public interface for the library is a combination of macros and functions. It is rather verbose though, so you want to wrap it in a macro and create a new library: B. You want the users of your library to only have to use your library and not have to worry about depending directly on library A, so you want to re-export some of the symbols from library A so the users of your library can just use those symbols exported from your library. If you don't see a problem with this then congratulations: you are sane. This relies on just a couple features: - feature of asdf: orthogonal to packages meaning that one can use a symbol from any package without having to explicitly load the system. If a package is loaded, it's symbols can be used. - feature of packages: symbols in a package can be referred to by their full name (`package-name:symbol-name`) anywhere in anyone's program. It does not matter if they have the symbol imported into their package. It does not matter if they have a package local nickname. It does not matter that they have a different symbol interned with the same `symbol-name`. - macros do not have any feature of their own that make this possible, but because of the previously mentioned features, using a symbol from another library in a macro expansion works just fine. As an added benefit, you cannot expand to symbol from a package that is not exported or from a non-existent package because the reader (which happens before macro expansion, even before macro definition) makes sure all the symbols are accounted for. I witnessed someone in almost this exact situation. They were using Rust. The problem happened when someone tried to use the macro from library A that had been re-exported from library B. The macro expanded to use some symbols that were qualified assuming that the user had already imported them from library A. However, the user imported from library B. The work around ended up being to not re-export and just tell the user via documentation that they have to explicitly depend on library A, and use their macro. That is the story. Let me know what you think, and tell me about a time that you were grateful for the way Common Lisp handles packages and symbols.
charje 8 months ago • 27%
The final strawberry for me was forcing people to have 2fa.
charje 8 months ago • 100%
True. They are not near as nicely integrated as lisp macros though.
charje 9 months ago • 100%
Does anyone have experience with the pine buds pro? I'm especially curious about the microphone.
charje 9 months ago • 100%
You R a nerd for the last one.
charje 9 months ago • 100%
- Common Lisp
- Haskell I guess
defmacro
. This would probably involve changing the syntax to list form like axel does.
charje 9 months ago • 100%
Clack is louder than click.
charje 9 months ago • 100%
Have you tried kailh box clickies (like box white)? They are much more refined both in sound and tactile feedback. I'm not going to suggest a specific keyboard to buy because I made mine.
charje 10 months ago • 100%
This exact thing happens to me.
charje 10 months ago • 100%
JS doesn't do any type inference. Ocaml type checker knows all the types and is completely type safe without type annotations.
charje 12 months ago • 100%
You might need to package it.
charje 1 year ago • 100%
This version is definitely a bit harder to follow what is going on.
charje 1 year ago • 100%
Many farmers growing plants for animal feed. Also there are Deer farms that raise deer specifically for the hunting industry.
charje 1 year ago • 100%
Instead of storing intersect-p as a variable and keeping it until the end of the loop, you can return early as soon as you find the first intersection.
Even though a hash table has better symtotic run time, you might find after benchmarking that the O(n^2) is faster for your use case. If you are set on using a hash table, you might consider setting the initial size to something a bit larger (relative to the input lists) to avoid having to dynamically grow the hash table.
I think also the return value of the inner loop is never used...
I personally like to keep my tests assertions top level so I can interactively run each one by itself.
charje 1 year ago • 100%
I think the bigger problem is that they are hard to write and sometimes break tooling.
charje 1 year ago • 100%
I'm pretty sure they operate on tokens not AST.
charje 1 year ago • 100%
More modern shirt text would be scheme vs common lisp.
charje 1 year ago • 100%
proprietariable just means the code can be taken and rerelased as proprietary (no freedoms all rights reserved).
charje 1 year ago • 100%
You can sell GPL licensed software. You don't have to publish the source code publicly online.
charje 1 year ago • 100%
You still own the code you release under GPL. the restriction you are describing is actually caused by the non-copyleft licences you claim to prefer. If you choose to use MIT, you are limiting which libraries you can use. If you had picked GPL to begin with, you can use any library.
charje 1 year ago • 96%
Copyleft licences are the only true free software licences. All other open source licenses are just proprietariable.
charje 1 year ago • 100%
I would love to hear your answers too cadar@lemmy.ml.
charje 1 year ago • 100%
-
Common Lisp. I basically only use SBCL. It has good introspection, restarts, and source analysis for debugging. I mainly write theoretical research code that doesn't depend on calling into the JVM or C++ code. I do try to keep my code portable, so I will check with other implementations from time to time.
-
I use GNU Emacs and Sly (though I am thinking of trying Lem). I don't use any structural editing outside of Emacs' built in electric-pair-mode, show-paren-mode, and expand-region (not built in). I don't even use rainbow delimiters anymore. I get all my Common Lisp dependencies from GNU Guix. It is very pleasant to use and is rolling release. In addition to Guix, I use cl-guix-utils, which adds live loading of dependencies quicklisp style.
-
I first learned Racket then Emacs Lisp (both in college). Emacs lisp was more pleasant due to its interactive and self documenting nature. I wanted to write real programs; Common Lisp looked and felt more like Emacs Lisp (but better). I started learning Common Lisp primarily with the "Lisp for the web" series. I was hooked. I learned more mainly through reading the hyperspec, studying other people source code and reading articles. I didn't read any of the famous books until I recently read "Practical Common Lisp". I already knew pretty much everything it had to offer. I wish I had read it sooner.
GNU Guix: https://guix.gnu.org/
cl-guix-utils: https://git.sr.ht/~charje/cl-guix-utils
"Lisp for the web": https://adamtornhill.com/articles/lispweb.htm
"Practical Common Lisp": https://gigamonkeys.com/book/
charje 1 year ago • 100%
Before cars, people would rice their rice carts.
charje 1 year ago • 66%
This is a great insult to pigs.
charje 1 year ago • 62%
I know it is an unpopular opinion, but it is a huge headache in general. I don't think the theoretical benefits (which make total sense) actually pay off in reality and are worth the extra headache. I'm not saying they should not have it at all, but it should be at least opt-out instead of forced.
In the case of github, I think it is part of their long drawn out plan of data collection and proprietary lock down. Next they are going to require your house address and government ID. I feel better using an free and open source platform anyway.
charje 1 year ago • 14%
Capitalism should be authoritarianism and bottom text should be "why doesn't communication work?".
charje 1 year ago • 100%
I really enjoyed the insights here. I wish people more liberally made custom condition and error types and defined many restarts around where they are signaled.
charje 1 year ago • 71%
charje 1 year ago • 100%
Emacs has a proper gui by default. You have to give it option to make it run in the terminal.
charje 1 year ago • 81%
"save" is a bit of misnomer. The animals are forcibly bred into a life of pure suffering. That is what they are being saved from. The less demand for animal torture, the less the industry needs to breed.
charje 1 year ago • 100%
Using -
is much nicer.