[a / b / c / d / e / f / g / gif / h / hr / k / m / o / p / r / s / t / u / v / vg / vm / vmg / vr / vrpg / vst / w / wg] [i / ic] [r9k / s4s / vip] [cm / hm / lgbt / y] [3 / aco / adv / an / bant / biz / cgl / ck / co / diy / fa / fit / gd / hc / his / int / jp / lit / mlp / mu / n / news / out / po / pol / pw / qst / sci / soc / sp / tg / toy / trv / tv / vp / vt / wsg / wsr / x / xs] [Settings] [Search] [Mobile] [Home]
Board
Settings Mobile Home
/g/ - Technology

Name
Options
Comment
Verification
4chan Pass users can bypass this verification. [Learn More] [Login]
File
  • Please read the Rules and FAQ before posting.
  • You may highlight syntax and preserve whitespace by using [code] tags.

08/21/20New boards added: /vrpg/, /vmg/, /vst/ and /vm/
05/04/17New trial board added: /bant/ - International/Random
10/04/16New board for 4chan Pass users: /vip/ - Very Important Posts
[Hide] [Show All]


[Advertise on 4chan]


File: (ichihime-rising-sun).jpg (252 KB, 1024x1024)
252 KB
252 KB JPG
>Lisp is a family of programming languages with a long history and a distinctive parenthesized prefix notation. There are many dialects of Lisp, including Common Lisp, Scheme, Clojure and Elisp.

>Emacs is an extensible, customizable, self-documenting free/libre text editor and computing environment, with a Lisp interpreter at its core.

>Emacs Resources
https://gnu.org/s/emacs
https://github.com/emacs-tw/awesome-emacs
https://github.com/systemcrafters/crafted-emacs

>Learning Emacs
C-h t (Interactive Tutorial)
https://emacs.amodernist.com
https://systemcrafters.net/emacs-from-scratch
http://xahlee.info/emacs
https://emacs.tv

>Emacs Distros
https://spacemacs.org
https://doomemacs.org

>Elisp
Docs: C-h f [function] C-h v [variable] C-h k [keybinding] C-h m [mode] M-x ielm [REPL]
https://gnu.org/s/emacs/manual/eintr.html
https://gnu.org/s/emacs/manual/elisp.html
https://github.com/emacs-tw/awesome-elisp

>Common Lisp
https://lispcookbook.github.io/cl-cookbook
https://cs.cmu.edu/~dst/LispBook
https://gigamonkeys.com/book
https://lem-project.github.io
https://stumpwm.github.io
https://nyxt-browser.com
https://awesome-cl.com

>Scheme
https://scheme.org
https://try.scheme.org
https://get.scheme.org
https://books.scheme.org
https://standards.scheme.org
https://go.scheme.org/awesome
https://research.scheme.org/lambda-papers

>Clojure
https://clojure.org
https://tryclojure.org
https://clojure-doc.org
https://calva.io
https://clojure.land
https://www.clojure-toolbox.com
https://mooc.fi/courses/2014/clojure
https://clojure.org/community/resources

>Other
https://github.com/dundalek/awesome-lisp-languages

>Guix
https://guix.gnu.org
https://nonguix.org
https://systemcrafters.net/craft-your-system-with-guix
https://futurile.net/resources/guix
https://github.com/franzos/awesome-guix

>SICP/HtDP
https://web.mit.edu/6.001/6.037/sicp.pdf
https://htdp.org

>More Lisp Resources
https://lisp.nexus
https://rentry.org/lispresources

(set! prev-bread (quote >>106288815))
>>
File: waytemp.png (1.21 MB, 2816x676)
1.21 MB
1.21 MB PNG
>A Wayland color temperature control daemon written in Common Lisp inspired by wl-sunset. Lets you gradually control the bluelight filter, either by a script, or a binding in your window manager.
https://github.com/luciusmagn/waytemp
>>
sdfdsf
>>
>>106419122
>https://github.com/luciusmagn/waytemp/blob/master/LICENSE.lisp
Cool license
>>
File: screenshot.png (37 KB, 1286x805)
37 KB
37 KB PNG
XLibre finally packaged 4 Guix! ( ̄▽ ̄)b
https://gitlab.vulnix.sh/spacecadet/guix-xlibre
https://github.com/orgs/X11Libre/discussions/291
https://www.youtube.com/watch?v=-bTeRTo02S4
>>
>>106419189
very nice desu
>>
File: symbolics-keyboard-1.jpg (213 KB, 2730x1131)
213 KB
213 KB JPG
>>106413839
>http://xahlee.info/kbd/symbolics_space-cadet.html
Interesting
https://www.rcsri.org/collection/symbolics-keyboards/
>>
git gud
>>106340331
https://gitlab.com/naughtybits/schemebbs
>>106399271
https://github.com/ECHibiki/Kotatsu-V
>>
>>106419593
>kotatsu
>Hackable and easy to deploy imageboard software written in Guile/Scheme.
>Dependencies
>>>>>>>>artanis 0.5.1
>>
>>106419653
Artanis is a fucking web framework thing.
This kind of shit will destroy lisp like it did Java.

I was looking through the srfis and a large number of them are absolute dogshit. 119 stands out as maybe being the worst, the likely intent is to destroy lisp and scheme… and I’m being generous and kind to it with my assessment,
>>
>>106420345
>destroy
>one of the top 3 most used languages in the world
I actually think webshit is the thing missing from most lisps. Most personal computers run on windows and cellphones on HIVdroid, no sane person likes to develop natively in those things, it is easier to just develop for the browser.

Most SRFIs are dog shit, but you are not forced to use them.
>>
>>106409804
I shared the proced thing with the guys in #emacs-til, and one of them came up with this.
(use-package proced
:custom
(proced-enable-color-flag t)
(proced-format 'user)
:hook
(proced-mode . hl-line-mode)
:config
(setopt proced-format-alist (seq-union '((user user pid tree pcpu pmem start time comm)) proced-format-alist)))
>>
>>106420345
Don't be cringe.
>>
>>106420847
I tried his 'user format. I guess it looks cleaner, but it removes too much information. When I'm trying to find a process to kill, I often need to see the args it was started with to disambiguate it from other similar processes. Luckily, switching back to one of the built-in formats (short, medium, long, verbose) is easy.
(setq proced-format 'short)

Then `M-x revert-buffer` in the proced window to refresh it.
>>
>>106419114
Tsumo-nyaa!
>>
Where's the anon who posted this while going through SICP? >>106400773
Any more insights? Report, report!
>>
>>106420345
>Artanis is a fucking web framework thing
Great. I don't want to use Rails or Django shit.
GNU Guix and other GNU websites use Artanis btw.
>>
File: OJBK.jpg (27 KB, 388x460)
27 KB
27 KB JPG
Interesting
>The infinitely extensible command runner, control plane and project automator à la Make (Guile Scheme - Lisp)
https://codeberg.org/jjba23/maak
>>
>>106419114
Mahjong Lisp client when
>>
I was looking through Artanis and I'm wondering what the point was of choosing a lisp for this project. Tons of impure FP, use of iterative forms where idiomatic scheme would have sufficed, etc. A lot of it reads like any other clunky, imperative project. What am I missing?
>>
>>106424351
Lisp is a multi-paradigm programming language. Guile even has GOOPS (inspired by CLOS).
https://www.gnu.org/software/guile/manual/html_node/GOOPS.html
>>
>>106422646
>There are only three web frameworks in the world
Clojure has you covered if you need web dev.
>>
Waiting for this bad boy to appear on annas-archive because I do not have 40 bucks to give the author.
https://t3x.org/lfn/index.html
>What is the minimal LISP language that can interpret itself?
>What is the smallest LISP that can compile itself?
>What was LISP hacking like in the age of punch cards, teletypes, and mainframe computers?
>How is LISP related to Lambda Calculus?

>This text plays with the theme of minimal LISP by providing several implementations from a simple metacircular evaluator to a full compiler that emits a single, self-contained C program. The discussion is embedded in reflections on what hacking looked like in the early days of LISP.
>The second edition adds a chapter on the relationship between LISP and Lambda Calculus, introduces quasiquotation in the section about macros, fixes various small typos and mistakes, and smoothes out some of the prose.
>>
>>106425963
>What is the minimal LISP language that can interpret itself?
>What is the smallest LISP that can compile itself?
>How is LISP related to Lambda Calculus?
https://anthonylorenhart.com/2021-09-04-Extremely-Simple-Self-Interpretation/
Y = λ[λ[1[0[0]]][λ[1[0[0]]]]]
nil = λ[λ[1]];
evn =
λ[Y[λ[λ[λ[
1[λ[λ[4[1][λ[λ[0[2][4]]]]]]]
[λ[1[λ[λ[λ[1[λ[7[4[λ[λ[λ[0[3]]]]]][nil]]]]]]]
[λ[4[1[0]]]]]]
[λ[1[0][λ[4[λ[λ[λ[0[λ[λ[λ[2[7][10[6][nil]]]]]]]]]]]]]]
]
]]][0][nil]]

Alternatively in binary format
 19468
05580
05f00
bfe5f
85f3f
03c2d
b9fc3f8
5e9d65e5f
0decb f0fc3
9befe 185f7
0b7fb 00cf6
7bb03 91a1a
>>
>>106300881
>still waiting for org-4chan
You might need this.
https://orgmode.org/worg/dev/org-element-api.html
>>
>>106419114
What happened to that anon making a wm in lisp for arcan?
>>
>>106427540
He transcended.
>>
File: magit.png (1.09 MB, 1859x1004)
1.09 MB
1.09 MB PNG
What Emacs is this? It looks nothing like Emacs.

This is allegedly Magit, so it must be Emacs.
>>
>>106425963
um, fren
https://libgen.gs/ads.php?md5=78231ea75047f062021bd1b1e62b55fd
>>
File: racket.yin-yang.png (374 KB, 1904x2027)
374 KB
374 KB PNG
>>106419114
The OP image inspired me to try this.
#lang racket
(require 2htdp/image)
(require lang/posn)

(define (yin #:radius (radius 50)
#:color (color "black"))
(overlay/offset
(wedge radius
180
"solid"
color)
(- radius (/ radius 2)) (- radius (/ radius 4) 1)
(rotate 180
(wedge (/ radius 2)
180
"solid"
color))))

(define (yang #:radius (radius 50)
#:color (color "white"))
(rotate 180
(yin #:radius radius
#:color color)))

(define (yin-yang #:radius (radius 50)
#:yin-color (yin-color "black")
#:yang-color (yang-color "white"))
(overlay/offset
(rotate 180
(wedge (/ radius 2)
180
"solid"
yin-color))
(- (/ radius 2)) (+ (- (/ radius 4)) 1)
(underlay/offset
(yin #:radius radius #:color yin-color)
0 (- radius (/ radius 2))
(yang #:radius radius #:color yang-color))))
>>
>>106427842
https://tigerbeetle.com/blog/2025-08-04-code-review-can-be-better/

I don't think that's Emacs. It's probably VSCode or a derivative. Magit clones exist for VSCode.
https://github.com/kahole/edamagit
>>
File: 14ykouc9op6f1.png (87 KB, 1467x886)
87 KB
87 KB PNG
>>106427923
cement
>>
>>106428142
Interesting approach.
>>
>>106425707
> Clojure
As soon as they drop the JVM to make it viable—in and of itself—it has a chance.
Right now it’s just an fancy alternative to Java the language for outputting jvm bytecode that astonishes your coworkers at TATA consulting services Pvt.
>>
>>106427867
That's the first edition, fren
Easily found, yeah, but I want the second.
>>
File: file.png (369 KB, 1108x881)
369 KB
369 KB PNG
Apart from Emacs, do you use any other software made with a LISP language?
I used Lynx for some weeks, but then it started to break almost every 10 minutes, then I just gave up. It's a nice browser, though. Not sure if it still breaks every 10 minutes, but apart from that it was pretty cool actually.
>>
>>106428708
> He doesn't know about Clojurescript
>>
>>106429583
You mean Nyxt?
https://nyxt.atlas.engineer/
https://lynx.invisible-island.net/
>>
>>106429649
Yeah, it was Nyxt, my bad.
>>
File: Om-snippet.png (86 KB, 960x256)
86 KB
86 KB PNG
>>106429583
Believe it or not, yes I do.

https://opusmodus.com/
>>
File: 1753460571269.jpg (205 KB, 1238x1053)
205 KB
205 KB JPG
>>106420847
>use-package
>>
>>106429949
Not her but what's wrong with that now? I used it with straight for years now, it's handy. I'm not up to date with the latest Emacs zeitgeist and I don't know elisp.
>>
File: 1756515898609368.png (2 KB, 136x92)
2 KB
2 KB PNG
>>106427842
See this? It's the status indicator/button for Remote, VS Code's killer feature.
>>
>>106429949
any problem not related to the fact that it's macro dsl, not lisp?
>>
>>106419114
Use case for lisp?
>>
>>106431090

write and sell books to autits
>>
>>106431090
Increased IQ points.
>>
File: (E)LISP.png (507 KB, 1800x1500)
507 KB
507 KB PNG
>>106431090
Free Software (as Saint IGNUcius intended)
https://www.gnu.org/gnu/rms-lisp.html
>>
>>106431090
Basically creating concepts for all modern languages. Yes, all the fancy crap you see people adding to "modern" languages was already done in old LISP languages.
>>
>>106431090
I need to write the filter for use case.
>>
>>106421202
Nothing super interesting for today. I'm working through chapter 2 steadily; exercises for today were implementing some relatively boilerplate set functionality: unions, intersections, etc. A bit of complexity analysis for different algorithms. For the first time in a while, it all feels relatively trivial. I'm going to keep doing all the exercises just in case I would otherwise miss something interesting to me, but as of now... all quiet on the western front.
>>
File: 1752324505355516.jpg (204 KB, 800x788)
204 KB
204 KB JPG
>>106432392
Keep us posted.
>>
>>106431090
bb.edn
{:tasks
{server {:doc "Run a server on `/tmp/notify-send.sock`."
:task (shell "socat UNIX-LISTEN:/tmp/notify-send.sock,fork EXEC:./notify.clj")}
client {:doc "Pipe an EDN expression through socat to send a request to the server."
:task (shell "socat - UNIX-CONNECT:/tmp/notify-send.sock")}
ssh {:doc "Forward unix domain socket to a remote server."
:task (let [remote (System/getenv "REMOTE")]
(shell "ssh" "-R" "/tmp/notify-send.sock:/tmp/notify-send.sock" remote))}
autossh {:doc "Forward unix domain socket to a remote server using autossh instead of ssh."
:task (let [remote (System/getenv "REMOTE")]
(shell "autossh" "-M" "0" remote "-N" "-R" "/tmp/notify-send.sock:/tmp/notify-send.sock"))}
}}

notify.clj
#!/usr/bin/env bb
(ns script
(:require [clojure.edn :as edn]
[babashka.process :refer [shell]]))

(def defaults "Default options for notify-send" {})

(defn notify
"Shell out to notify-send with the given parameters."
([message]
(notify {} "ATTENTION" message))
([title message]
(notify {} title message))
([opts title message]
(let [final (merge defaults opts)]
(->> final
(map (fn [[key value]] [key value]))
(flatten)
(#(conj % "notify-send")) ; prepend to beginning
(vec)
(#(conj % title)) ; append to end
(#(conj % message)) ; append to end
(apply shell)
))))

;; Read one EDN expression from `*in*` and use it as arguments to `notify`.
(apply notify (edn/read *in*))


I wanted remote servers to be able to send me local desktop notifications, so I used babashka and socat to write a wrapper around notify-send to make it a server.

Run server locally
bb server


Test server locally
echo '["hello"]' | bb client


Expose server to remote
env REMOTE=anon@remote.org bb ssh
>>
What's some benefits of GNU Guix? I'm not trying to be like "usecase?" but I mostly run NixOS and have seen Guix described as "inspired" by Guix. I know it's all free software which is cool, and the config files being in Scheme is sick, but I just wondering like is it practical or just a GNU self-sucking machine?
>>
Emacs: Golden Ratio or Zoom?
>>
>>106433404
Once you've exposed the server to a remote host, you can ssh in to the remote host to test it.
ssh anon@remote.org
cd /to/directory/that/has-notify.clj-and-bb.edn-in-it
echo '["hello from remote server"]' | bb client
>>
>>106433506
Like this?
https://github.com/roman/golden-ratio.el
^-- This style is not for me. I don't split a frame into too many windows. If I split a frame, it's usually just 2 evenly-sized vertical windows side-by-side. Sometimes a little more, but not often.
>>
Anybody using soju bouncer with ERC? How's the experience? Are timestamps for messages coming form the bouncer when ERC was offline correct?
>>
>>106433699
yeah, for me it's a 2 vertical split and repl/eshell at the bottom. anything more seems overwhelming and distracting
>>
File: guixchad.png (240 KB, 1229x500)
240 KB
240 KB PNG
>>106433441
I'm the only man on earth who uses both nix and guix, guix is as practical as any other linux distro and it's also a machine for gnu self-sucking
advantages over nix are ideological or preference, libre only, no systemd, no auto-generated packages, only source-based builds, and a full source bootstrap of guile and guix itself using MES
build scripts are written in scheme too, not just configuration
there's also a lot of disadvantages compared to nix, but I'm not going to write a blog post this early on a saturday
>>
>>106430144
>>106430633
NTA but I don't see the point of using it considering `with-eval-after-load' exists.
>>
Anyone working on traditional AI? Cellular automata and such, not LLMs and stupid ass chatbots
>>
>>106433404
No matter how cool the a new shell is, I can't seem to bothered to change from Bash. Unfortunately interop is more important for shell scripts (and me) than confort.
>>
>>106434956
There is an incredibly schizoid Guile AI thing. Cogs or something. One of the corporate LISPs also has some hyper autistic databases and AI stuff.
>>
>>106435716
Babashka isn't a shell. It's a subset of Clojure with fast startup that makes it suitable for command line scripting.
https://babashka.org/

You'd use it in situations where you might have used Perl or Python before.
>>
>>106433699
The one exception to this is when I use irc via erc. I'll split the frame into lots of windows, so I can monitor many channels at once. They're roughly evenly sized though. The only resizing i do is M-x balance-windows.
>>
>>106435920
Yeah I mean shell/scripting language. I rather stick with python and bash because everyone else understands that.

I will use lisp for projects thought.
>>
is Dylan still the best "lisp" descendant ?
https://opendylan.org/
>>
>>106430543
https://code.visualstudio.com/docs/remote/remote-overview
>>
File: black-mirror-1600x900.jpg (158 KB, 1600x900)
158 KB
158 KB JPG
What's some good schizo uses for lisp. Like if I wanna really go off the deep end and start thinking my computer is talking to me, what do I code
>>
File: MEDS.gif (2.56 MB, 1200x800)
2.56 MB
2.56 MB GIF
>>106436620
M-x doctor
>>
File: fact.png (40 KB, 341x498)
40 KB
40 KB PNG
Clojure is the best Lisp.
>>
>>106437028
Do you want to work for Nubank? They are a bunch of scammers. Brazilians are fucked with them.
>>
>>106430543
>VS Code's killer feature
Why is it better than tramp?
>>
>>106433964
I wanted to love Guix SO bad, but it was just slow to do anything and make configuration changes. The documentation wasn't clear on service options and Geiser wasn't giving me decent autocomplete, so I had to dig into the service definitions to understand what options they expect. Maybe I'm just a brainlet but I found it difficult to set it up the way I wanted to.
I will stick to Fedora until I gain the mental capacity to understand Guix.
>>
If you have a function that calls a passed in function with 1 values, but in your passed in function you want to have access to the previous value you can use mutation and closures like this

```lisp
(define f
(let ((prev-x #f))
(lambda (x)
;; do something with x and previous x
(set! prev-x x))))

(call-f-with-something f)
```

Is there any way to do this without mutation (assuming you can't rewrite call-f-with-something to make it pass in the previous value)? I don't really understand what state monads are, are they a way to solve this kind of thing?
>>
>>106437795
Read the sticky to learn you to use code blocks in your posts. There's no markdown support here.
>>105076684
>>
>>106437254
>slow
Yeah that's the main problem people have with Guix, specially when it comes to guix pull.
https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/
>Geiser wasn't giving me decent autocomplete
What do you mean? Like the argument names of functions/special forms weren't showing up?
>>
File: M-r.png (52 KB, 1214x172)
52 KB
52 KB PNG
I never use M-r. Persuade me.
>>
>>106439564
Lol, yeah, i’ve never heard of it either.
Sounds like it’s used for people with nervous fidgets while thinking.
>>
I'm looking at Guile and https://dthompson.us/projects/chickadee.html (particularly interested in the channels part of it).
If I make something with it will I be able to distribute the program to normal people (i.e. for Windows)?
Anyone tried to shove a Chickadee project into browsers with https://codeberg.org/spritely/hoot ?
>>
>>106437254
> slow when make config changes
Is that so something you do frequently? I do it once every few years or so. All you really need.
It might be easier to re-evaluate your priorities.
For example, I don’t really use the “desktop” environment at all. I just run emacs mostly, and compilers.
On windows 11 I’ve started killing “explorer” immediately because it’s hopelessly slow.
And then I just run emacs and eshell withn that. Or just regular shell if I have the perms.
>>
>>106437795
> can’t use set! For no apparent reason
So, just treat prev-x as a list and cons x onto it, and then use car to get it back in “do something”
> no, i can’t use lists either, or stack, or storage, or closures, or lambdas…except the one I used there once, or defines, or recursion, or more functions, i can’t use cons, my lisp doesn’t have it….
>>
>>106437254
have you tried guix home? you can install guix on top of fedora and just use it configure your dotfiles and user services, good way to get more hands on without committing to it
it might be the one part of guix I love more than nix, home-manager in nix is a big mess
>>106439014
pull performance is only going to get worse too, pull in general is fucked but none of the devs I've tried asking about it want to entertain alternatives
>>
bros, i just like clojure because it gives me access to java classes
>>
>>106439014
>guix pull
Yep that was it. Took so long I wanted to set up my own caching server, but at that point I feel like I'm working around too many things to justify it. Are you aware of any plans to address that issue?
>What do you mean? Like the argument names of functions/special forms weren't showing up?
I don't quite recall, but I think so. And I was having issues with Geiser's stability in general.
>>106439745
Well yeah when I was getting my initial config going. Very slow feedback loop.
>>106439760
>have you tried guix home?
I think when I was playing with Guix, home was just starting out, and the documentation was non-existent so I stayed away. I might just give it another try, fuck it. I've definitely been thinking of installing Guix on top of Fedora to specify builds for my own projects, but I'm worried about running into missing packages and whatnot.
>>
>>106439727
>will I be able to distribute the program to normal people (i.e. for Windows)
I think Guile hasn't been properly ported to Windows yet, although it should probably work on WSL or using MinGW/Cygwin.
For macOS, apparently it's available:
https://formulae.brew.sh/formula/guile
>Chickadee project into browsers with https://codeberg.org/spritely/hoot
There are some games written with Guile Hoot:
https://davexunit.itch.io
>>
>>106439014
>>106437254
>>106433964
The fatal flaw of guix/nix is that you're trapped inside a nonstandard ecosystem and can't get out.
ALL your programs now have to be declaritive packages. Effectively it's impossible to run non packages software, even writing your own code needs to be packages to run correctly.
It's all consuming and oppressive, you've run from the terror of arbitrarily mutable chaos breaking everything directly into the jaws of the beast.

Realistically they should only be used as secondary package managers. I love installing guix/nix packages, I HATE making them.
>>
>>106435920
The worst thing about Clojure is that pretty much everything outstanding out of Java is a subset of it, Jank, ClojureJS, ClojureCLR, Babashka...
>>
>>106440716
>inside a nonstandard ecosystem and can't get out
That's the price of reproducibility & bootstrappability. Something that most package-managers/distros don’t really care about.
>Effectively it's impossible to run non packages software
At least in Guix, you can use FHS Guix containers. Not ideal, but it works.
https://guix.gnu.org/en/blog/2023/the-filesystem-hierarchy-standard-comes-to-guix-containers/
>>
>>106440889
It's isolating. I never realized how often I download and run random ancient shit or follow cryptic tutorials to get old games running correctly or compile random git repos of stuff people threw together before suddenly I couldn't do any of it anymore.
it's awful on the same scale as what made me switch in the first place(having to literally brace for impact every arch update to see if my entire system would brick itself and literally having memorized all the steps to manually fixing the packages pr reinstalling and configuring everything with bash scripts)
I do enjoy being able to just start and update and walk away or even go to sleep and not worry. I even had a blackout in the middle of an update and had to reboot and nothing happened besides having to continue where it left off. That's great, but I don't want to have to deal with writing wrappers for everything all the time. Nix is especially bad since I can't stand how horribly the shitlang is designed and literally don't want to learn more about it.

I think I'm just going to go back to arch but go full meme btrfs automatic rollback snapshots before every package install.
>>
>>106419593
kotatsu was the software for 4taba(dead)
it was broken and buggy
it was different from other imageboards though and kinda neat
>>
>>106433404
>flatten
You almost always want to mapcat instead of flatten
You also rape thread-last, just do something like
(apply shell (concat (cons "notify-send" (mapcat vec final)) [title message])))
Transform that with thread last and you get something slightly different.
Anyhow, (#(,,)) in a threading macro is a smell, better use as-> if you're at it.
You're also slightly abusing collection types while you are signalling you want to be in the world of sequence abstraction with thread-last.
If you want to not jump around collection types just
(concat ["notify-send"] (mapcat vec final) [title message])
I also think babashka has facilities for reading arguments, why not use that instead of piping to stdin? Use *command-line-args*, which will already be packed into a list, then you don't need to fuck around edn reading, either.
bb client hello
Simpler, no?
>>
File: rhombus-logo.png (23 KB, 470x329)
23 KB
23 KB PNG
>>106436205
For another non-sexp Lisp, there's also Rhombus:
https://rhombus-lang.org
https://docs.racket-lang.org/rhombus/
>>
>>106436205
good feature
https://opendylan.org/about/examples/generic_functions.html
>>
>>106437795
Define f as an inner function with tray arguments, call it from the outer function with 0 or nil depending on the algorithm, pass x and last-x to any further recursive calls. No need for nasty stateful garbage.
>>
>>106442779
>tray arguments
*two arguments. Fucking phone. Something like this:
(define (f fn x)
(define (i-f next x last-x)
(if (cond? x)
term
(i-f next (next x) x)))
(i-f fn x 0))
>>
Try C-x C-n if you haven't already.
>>
>>106442816
This is a shit example for the record because i-f has the structure of a higher order abstract function and as such should be a reusable structure declared outside f... but it's just supposed to illustrate how you can seed an inner function and feed your outer function's arguments into it to mimic stateful behavior in a pure way.
>>
File: set-goal-column.png (50 KB, 740x441)
50 KB
50 KB PNG
>>106442856
I'll try it once.
>>
I want to switch buffer but show the new buffer in a new frame. Is there a built-in command for this? C-x 2 C-x b seems too slow.
>>
File: 1727199288586442.png (6 KB, 308x73)
6 KB
6 KB PNG
Anyone having issues with Emacs on Gayland? When moving around a file by large chunks (like with M-] or page down, but not when just scrolling with a mouse or arrow key) I seem to get rendering issues like picrel. I can't recall this ever happening to me, even on wayland, ever before.
>>
>>106440716
I'm already used to using wine, using "guix shell --container --emulate-fhs" needs less fucking around and works about as often as wine did 10 years ago, maybe even more
on the other hand I actually like writing packages, it's nice knowing that if you can get it working once it'll work forever
>>
>>106443376
>C-x 2 C-x b
There's `switch-to-buffer-other-window' which is bound to C-x 4 b and `switch-to-buffer-other-frame' which is bound to C-x 5 b. From your example I'm guessing you're looking for the former (other window).
>>
>>106445065
>C-x 4 b
Excellent. Go visit /d/. You deserve a break.
>>
>>106428708
>Right now it’s just an fancy alternative to Java the language for outputting jvm bytecode that astonishes your coworkers at TATA consulting services Pvt.

and Scala3 does the functional/immutable thing better than Clojure.
>>
>>106431090
>Use case for lisp?

Interactive programming for systems of high or unknown complexity.
>>
>>106437028
>Clojure is the best Lisp.

Clojure was created when someone said, "Macros, lack of syntax, and tail recursion, defining features of a lisp, right? Well fuck out of here with them." We all know that what really embodies the lisp spirit of freedom is building a language on a Java Virtual Machine. Ever since John McCarthy had S expressions revealed to him by God in a dream, lispers have thought, "If only I could use horribly written libraries from a shit language with an unsound type system!"

We tried in vain to build a lisp on a Fortran VM, but we couldn't make it miserable enough (and also, IBM didn't like Fortran being used to innovate, its apparently against the language standard). Clojure frees us to finally do that. Thanks, Clojure! I only hope that one day people can bring the same innovative ideas to Prolog! All of these idiot professors trying to improve the language with higher order logic or thoughtful object systems? Fools in ivory towers! What prolog needs most is the ability to easily call Java libraries. I can't tell you how many times I've been writing AI code and thought to myself, "There's a Java library that would make this so easy!".
>>
>>106440059
>bros, i just like clojure because it gives me access to java classes

you can easily access java classes from Common Lisp by using Armed Bear Common Lisp (ABCL)

example:

For example this lisp code shows a dialog using Java Swing, using ABCL

;; JDialog - modeless dialog
(defun dialog (&optional parent-frame (title "") (is-modal +false+))
"Create a JDialog."
(if parent-frame
(jss:new 'JDialog parent-frame title is-modal)
(jss:new 'JDialog)))


Instancing java objects is as easy as instancing CLOS objects.
>>
>>106440807
>The worst thing about Clojure is that pretty much everything outstanding out of Java is a subset of it,

This is because Clojure was badly designed: The creator (Rich Hickey) let many Java stuff leak straight into the standard library.
>>
>>106447362
>and tail recursion
Explicit tail recursion is literally the best tail recursion
>>
>>106447419
>This is because Clojure was badly designed
Yeah, so badly designed that many companies use it instead of the almighty Common Lisp.
I wonder why...
>>
>>106447500
would you respond the same way to someone saying javascript is badly designed? how well designed a language is is hardly a factor in its popularity
>>
>>106447500
>Yeah, so badly designed that many companies use it instead of the almighty Common Lisp.
>I wonder why...

Reading skills good, sir? Badly designed in the sense that the creator let Java leak into it.

As for "many companies use it": Popularity is not a measure of quality. Otherwise Javascript or Python would be considered the highest quality, most advanced language.

Clojure is used because if you need to target the JVM and you have a brain, you woudn't use Java at all. Kotlin, Scala, Clojure, they're all fine choices in that case.
>>
Why can't you be happy for the success of another Lisp?
Trying to bring others down is bitch behavior.
>>
File: snib.png (399 KB, 891x597)
399 KB
399 KB PNG
>>106447634
le crabs-in-a-bucket mementality
>>
>>106447591
>how well designed a language is is hardly a factor in its popularity

based

"programming is pop culture" -- Alan Kay
>>
>>106447362
> closure was created when…
No, that was scheme

As long as you can write clean, portable subsets that are pure scheme (or common lisp) then nobody will have a problem with it.
If you can’t, then problem.
>>
>>106447398
Can java use kabob case internally in the jvm for named objects? This would be the greatest fuck-over ever—produce a bunch of classes that can’t be called (or named) from bare java.

I don’t know clojure, but I can’t wait to use it when working on my next java project I am forced to inheret to fix and maintain.
>>
>>106447591
> is hardly a factor in its popularity
It seems to be, in many cases, that it’s inversely proportional
>>
File: eshell.png (1.48 MB, 549x707)
1.48 MB
1.48 MB PNG
japanese ascii art as the eshell banner message
;;; see https://en.wikipedia.org/wiki/Shift_JIS_art
(defface shift-jis-art
'((t :font "-Mona-Mona Gothic Wide-regular-normal-normal-*-16-*-*-*-*-160-iso10646-1"))
"The face for Shift_JIS artwork, which requires an appropriate font,
e.g. Mona font.")

;;; you want non-breaking spaces to be invisible. for example:
;; (set-face-attribute 'nobreak-space nil :underline nil)

(setq eshell-banner-message
(with-temp-buffer
(insert-file "~/.emacs.d/ascii-art/alice")
(propertize (buffer-string) 'face 'shift-jis-art)))
>>
>>106448149
Added bonus. Looks more like real lisp machine.
Is that a proportional font?
I always dreamed of a day standard tab based indenting (as used by steele, sussman, kerginghan, ritchie, etc.) could be used with proportionally based fonts for lisp code again.
>>
>>106447595
you're greatly underappreciating Clojure''s abstractions of sequences, associative data structures (assoc/dissoc), and data structures where things may be added/removed (conj/disj).
yes, you can writing generics for doing this in Common Lisp, but the rest of the community might not, and you end up with the common problem of everyone off doing their own shit
>>
If nothing else Clojure heavily influenced a lot of new Lisp dialects (Fennel, Janet, Carp, Phet, Basilisp...), so clearly it did at least some things right.
>>
>>106447595
>Badly designed in the sense that the creator let Java leak into it.
If it wasn't hosted on the JVM it would never have taken off. It would have been ignored by the community and then abandoned by its creators.
>>
>>106451230
I think the whole point of it is to be a endoparasite of Java codebases. And that is why it is a successful. Everyone uses java despite being a bad thing for developers.
>>
>>106447301
>does the functional/immutable thing better
lolno
>>
>>106451673
I mean, guaranteed portability is not a trivial consideration. Because lisp is too heavy for embedded work, in a sense it finds a natural second home on the JVM since we're in the cursed worldline where lisp machines died out.
>>
>>106429940
looks amazing
>400 brit bucks
i guess lilypond is fine
>>
Did you guys know that rebinding M-[ and M-] fucks up terminal mode?
It starts sending the raw inputs to it (DEL turns into ~3 Page up turns into 5~ etc etc), you can just add
(global-set-key (kbd "M-[") 'backward-paragraph)
(global-set-key (kbd "M-]") 'forward-paragraph)

Or something to your init and check it with -nw
Spend 20 minutes commenting out random parts of my init until I found that shit.
>>
>>106443522
>I seem to get rendering issues like picrel
I think it stopped for me when I switched to the emacs-wayland package, the one with PGTK enabled.
>>
>>106454129
Meta key in general fucks up in terminal emacs.
>>
File: meta-bracket.webm (854 KB, 660x564)
854 KB
854 KB WEBM
>>106454129
I was expecting failure, but it worked for me on Emacs 30.2 running in wezterm.
>>
Can you configure or extend emacs using guile/scheme instead of elisp? If not, is the difference in semantics between the two significant?
>>
>>106454813
What the frick how? I only found out about this problem when I was getting dropped to tty and wasn't able to edit shit because of it. This issue, at least to me, happens on the tty, konsole and foot.
I'm also on 30.2, maybe wezterm just does something different.
>>
>>106454886
There's guile-emacs which intends to replace elisp with Guile, but it's a work in progress and it only got "resurrected" somewhat recently. Unlike Scheme, elisp has no TCO, but you can still write Scheme-inspired elisp code with named-let for example
https://www.gnu.org/software/emacs/manual/html_node/elisp/Local-Variables.html#index-named_002dlet
>>
File: weird.webm (673 KB, 752x573)
673 KB
673 KB WEBM
>>106455008
Unfortunately, I discovered a weird side-effect. This happens with both tilix and wezterm. After setting up those bindings,
- if the window gains focus, an "I" is inserted;
- if the window loses focus, an "O" is inserted.

I have no idea what's going on. With that said, the bindings do still work.
>>
>>106428708
>TATA consulting services
Actually worked there in London before they moved building.
>>
>>106454886
There are ways to extend Emacs in languages that aren't Elisp. For example, if you wanted to write OCaml extensions, you could do it with ecaml.
https://github.com/janestreet/ecaml
>>
I'm currently reading through the entire elisp manual top to bottom. About a quarter through so far.
>>
>>106455533
Nice digits. This may help you get a more accurate view of how far you are through the Elisp manual.
(defun Info-percent ()
"Return what percentage of the way you're into the current info manual.

Examples:

;; Return a plist with current-line, total-lines, and percent.
ELISP> (with-current-buffer \"*info*\" (Info-percent))
(current-line 113 total-lines 2569 percent 4.398598676527832)
"
(interactive)
(without-restriction
(let* ((current-line (line-number-at-pos))
(total-lines (line-number-at-pos (point-max)))
(percent (* (/ (float current-line) total-lines) 100.0))
(result `(current-line ,current-line
total-lines ,total-lines
percent ,percent)))
(message "%s" result)
result)))


- https://desuarchive.org/g/thread/105652614/#105696372
- https://desuarchive.org/g/thread/105652614/#105706173



[Advertise on 4chan]

Delete Post: [File Only] Style:
[Disable Mobile View / Use Desktop Site]

[Enable Mobile View / Use Mobile Site]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.