[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 / qa] [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


Thread archived.
You cannot reply anymore.


[Advertise on 4chan]


File: 1672621906251037.png (156 KB, 410x410)
156 KB
156 KB PNG
>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/ (Site)
https://github.com/emacs-tw/awesome-emacs/ (Awesome Emacs)

>Learning Emacs
C-h t (Interactive Tutorial)
https://emacs.amodernist.com (Configuration Generator)
https://systemcrafters.net/emacs-from-scratch/ (Emacs from Scratch)

>Emacs Distros
https://github.com/syl20bnr/spacemacs/ (Spacemacs)
https://github.com/doomemacs/doomemacs/ (Doom Emacs)
https://github.com/snackon/witchmacs/ (Witchmacs)
https://github.com/pprobst/yukimacs/ (Yukimacs)

>Common Lisp
https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/ (A Road to Common Lisp)
https://gigamonkeys.com/book/ (Practical Common Lisp)
https://cs.cmu.edu/~dst/LispBook/ (Common Lisp: A Gentle Introduction)
https://portacle.github.io (Emacs-based CL IDE)

>Scheme
https://scheme.com/tspl4/ (The Scheme Programming Language)
https://eecs.berkeley.edu/~bh/ss-toc2.html (Simply Scheme)
https://archive.org/details/Schemer/ (Books)

>Clojure
https://clojure.org (Site)
https://clojure-doc.org (Docs)
https://mooc.fi/courses/2014/clojure/ (Functional programming with Clojure)

>Elisp
Self-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 (Introduction to Elisp)
https://gnu.org/s/emacs/manual/elisp.html (Elisp Manual)

>Guix
https://guix.gnu.org/cookbook/en/html_node/A-Scheme-Crash-Course.html
https://systemcrafters.net/craft-your-system-with-guix/

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

>More Resources
https://pastebin.com/d6z9E9hU

(define alt-names '(/emg/ /emac/ /lol/ /let/ /flet/))
(set! prev-bread >>95913200)
>>
chicken
>>
>>96034785
(import (chicken based))
>>
File: SICP.png (25 KB, 814x891)
25 KB
25 KB PNG
SICP!
https://textboard.org/static/img/abelson-stole-the-precious-course-mit-version.webm
>>
Emac UI is old I want the modern lightweight gooey things that just work in other editors (I am eternally trapped inside emacs)
>>
(bump-with-message "Fuck the tranime maid thread")
>>
>
/gnu/store/da1ra6q8fs79alqz5a8jan5c6bk1qcg9-emacs-elfeed-3.4.1/share/emacs/site-lisp/elfeed-3.4.1/elfeed-search.el:
Warning: ‘point’ is an obsolete generalized variable; use ‘goto-char’
instead.

The fuck is wrong with point? How do I turn this trash off?
>>
>>96039439
Do you have (package-initialize) in your config?
>>
Is there something like a "read" mode? for org mode? It is kind of annoying to read my notes with all the asterisks, slashes and stuff.
>>
>>96040001
org-hide-emphasis-markers
>>
>>96019173
I'm still waiting for the proof
>>
>>96043054
Keep waiting honkey
>>
>>96043054
how convenient is that you dropped your name, avatar and trip when posting here again.
>>
>>96043574
I'm not the maid retard. I said you couldn't write a C function that returns a memoized version of another function, and that anon said it's possible but didn't show how.
>>
>>96043884
Since you can write a lisp from C and call that lisp's functions from C it should be obvious that it's not impossible.
Leaving a whole lisp implementation aside, the memoized function would just have to use well defined protocols for arguments and return values.
That'll have a lot of overhead compared to lisp or regular C but it's obviously not impossible.
>>
>>96044029
I won't even consider the "you can implement lisp in C" argument, it's just complete bullshit. same for something like "you can write an embedded C compiler and make your program modify its own binary to add the new function"

you can't write a C function that takes in a C function and returns a modified version of it
>>
>>96034697
How do I apply a function to a list which contains strings and sublists which also contain strings in Racket?

I am trying to concatenate all the strings together in the order they appear. So something like:

("one" ("two" "three") "four")


Would make "onetwothreefour"?
>>
>>96044174
Like I said memoization is obviously possible in C with or without a whole lisp implementation. Whether you consider the methods involved to be actual C or not depends on your level of mental illness or something. IDK just accept you're wrong retard.
>>
>>96044193
Just test if it's a list and then concatenate the result of calling the same function recursively on that sublist.
>>
>>96044193
that's a job for recursion
(define (deep-concat lst)
(let loop ((lst lst)
(acc ""))
(cond
((null? lst) acc)
((string? (car lst))
(loop (cdr lst) (string-append acc (car lst))))
((pair? (car lst))
(loop (cdr lst) (string-append acc (deep-concat (car lst))))))))


scheme@(guile-user)> (deep-concat '("a" ("b" "c" ("d" "e" "f") "g") "h"))
$5 = "abcdefgh"


>>96044304
>memoization is obviously possible
I didn't say memoization wasn't possible. I stated very clearly: it's not possible to write a C function that takes a C function and returns a modified version of it. yeah sure you can hand-write memoized functions in C, but you can't do what I described.
>>
>>96044353
>yeah sure you can hand-write memoized functions in C, but you can't do what I described
Since you can accept this you should also accept that
>it's not possible to write a C function that takes a C function and returns a modified version of it.
is possible if the functions to be memoized by the "generic memoizer" follow well defined protocols for arguments and return values.
Since such a memoizer is a C function albeit one that goes beyond int foo(char *str) in its interface it's still a C function.
>>
>>96044460
I'm still waiting for that code. if you're not gonna post it, we're done here.
>>
>>96044618
I already outlined how it's possible and the approach required to a sufficient degree so I'm not gonna write it.
Even if I wrote the code you'd say some dumb shit like "those aren't C functions because they communicate by passing their parameter lists in structs" or some shit.
I don't know why I even bother arguing with you retards when I already know noone here is gonna accept being wrong.
>>
>>96044353
Thank you for telling me. Is it possible to do it without cond (or similar constructs) to avoid branching?
>>
>>96044832
>those aren't C functions because they communicate by passing their parameter lists in structs
i'm sure he'd accept literally any C code that does what he said desu. It's also fine if you just look it up and copy paste it or post a screenshot or a link or whatever. he just isn't buying your abstract ideas as proof that it's possible
>>
>>96045165
......go back to your own containment thread, eli.

>>96044832
>>96045192
no he's right, I wouldn't accept implementing a whole custom function application system in C. I'm talking about idiomatic C functions. it's literally impossible, C functions are compiled before runtime, but anon seems to think he has something to gain by insisting on this.
>>
>>96045232
Your point has evolved from
>you can't write a C function that returns a memoized version of another function
to
>you can't write a C function that returns a memoized version of ANY other C function
These two obviously aren't the same thing. Former is wrong and latter is correct. You were initially arguing for the former.
>>
>>96045232
>......go back to your own containment thread, eli.
kek
should have known from the racket question
he's like the only racket user itt
>>
>>96045357
they are both the same problem, and they are both impossible

it's impossible even to discuss this problem in terms of C, you can't pass functions around in C, only pointers to functions. any function definition happens before runtime. the only way to do that is to implement another language in C, which makes it not C
>>
>>96045357
I'm not even sure if the latter is correct. Give it to some guy like Fabrice Bellard and limit the platforms it needs to work in and he'd probably figure it out.
>>
>>96045232
My threads have begun to be targeted by AI powered psychological weapons. If I post a maid in here, or turn my trip on, you can expect 50 semi-coherent GPT-Maidposts within the hour. This may already happen, because "Eli" is one of the targeting terms they use.

This is only going to intensify. By the end of this year, almost all posts on my entire Science Foundation will be GPT-Maidposter.

I have to get the maid out of the library before all the non-GPT maids get frustrated and leave the Science Foundation.

>>96045380
Is there something wrong with using Racket? I just picked Racket because it was easy to find and has a lot of examples and learning materials.
>>
I think we should let the lisp thread sleep for a while until this retard finds another place to annoy
>>
>>96045673
If someone answers this >>96045165 and the answer works, I will voluntarily leave this thread for 6 hours.

Can a solution which doesn't use branches be made? I don't like it when code gets branches.
>>
>>96045903
racket actually has a built in flatten function. you can use that
(apply string-append (flatten my-list))
>>
File deleted.
>>96046248
Thank you for telling me. See you maids in 6 hours.
>>
>>96039439
The solution is to update elfeed. I don't know how up to date elfeed is on Guix, but elfeed was recently (10 months ago) updated to replace point with goto-char.

It's still just a warning tho, you can just ignore it.
>>
>>96046297
delete your other lisp thread you absolute faggot
>>
he's like a fucking baby

>hey gu-- dragon maids, how do I get the length of a string in C?
>iterate over the characters incrementing a counter, and stop when you find a \0
>but uhhhh can I do it without loops? I think loops are bad
>use strlen()
>oh thanks!!! that solves it

just hide the thing under a layer of abstraction and he won't ever know
>>
>>96046248
Elisp has this too btw. I bet any mature lisp has such facilities.
(apply #'concat (flatten-list my-list))
>>
File: kid_holding_cup.jpg (166 KB, 2048x1152)
166 KB
166 KB JPG
>>96046535
>common lisp
>>
>>96046543
Yes, elisp does copy its style from the superior Lisp. It's nice of you giving elisp such compliment.
>>
>>96046543
that's okay, at least it has a standard way of converting numbers to roman numerals
>>
>>96046564
i meant common lisp doesn't have flatten kek.
at least it has alexandria though, which has a bunch of such utilities
>>96046595
based. it also has the mighty LOOP
>>
>>96045903
>Can a solution which doesn't use branches be made?
No. To remove branches you'd need to transform your 2 case algorithm into a single case algorithm. I leave proving this for your case as an exercise.
>>
is https://github.com/kanaka/mal any good? i was gonna do crafting interpreters instead but having to futz with java tooling is a headache
>>
good night to all emacbros except the maidposter
>>
>>96049450
good night
>>
>>96049450
Good morning all emacsbros except maidposter.
A few days ago I discovered https://github.com/rejeep/wrap-region.el and it made my day 10% better.
>>
>>96048666
You can follow the book and use a different programming language. Writing a basic interpreter is super easy.
>>
>>96050212
oh. that works too i guess
>>
>>96037678
>modern gooey
>lightweight
>>
>>96048666
I implemented all the steps and its pretty fun to do, but doesnt make you much better at lisp itself. already did tokenization for my json parser so just copied most of that for the reader.
lisp doesnt do the classic tokenize->parse->interpret, the latter two steps are the same and done in eval, so Id say its easier to implement.
>>
>>96037678
>be Emacs GUI
>have the best input latency out of any editor
Yeah anon I really want some electron crap
>>
>>96051631
>>96051631
>have the best input latency out of any editor
Source? This article is the most thorough test I've seen, and Gvim wins: https://pavelfatin.com/typing-with-pleasure/
However, I think all tested editors are fast enough that it doesn't matter - except for Atom. Good riddance to that mess.
>>
>>96052463
Forgot pic
>>
>>96037678
>old bad
>new gold
faakhead
>>
File deleted.
Good Morning Dra/g/on Maids!

>>96046512
So, under the hood it does the same thing? It isn't somehow optimized? Flatten just points to some definition written is Racket?

>>96049450
I have never used Emacs on purpose and have no plans to in the future.

If someone tells me how to select an arbitrary list item and return it and remove that index from the list, I will leave for 6 hours again.

Thank you Dra/g/ons for reading my post.
>>
fuck off eli
>>
File deleted.
>>96054935
I will do this for six hours, for the low price of a single Racket question.
>>
>>96055039
its impossible without using branching and loops.
>>
File deleted.
>>96055248
Unfortunate, but I accept that. Branching is fine.
>>
>>96054816
In Racket, you can select an arbitrary item from a list, return it, and remove it from the list using the remove-at function along with the list-ref function. Here's a step-by-step explanation and example:

First, you need to determine the index of the item you want to remove. You can generate a random index if you want an arbitrary item, or you can calculate it based on some criteria.

Once you have the index, you can use the list-ref function to get the item at that index.

After you have retrieved the item, you can use the remove-at function to remove the item from the list.

Here's some code that demonstrates this process:

(define (select-and-remove-item lst)
; Generate a random index between 0 and (length lst - 1)
(define random-index (random (length lst)))

; Get the item at the random index
(define selected-item (list-ref lst random-index))

; Remove the item at the random index and return the modified list
(define updated-list (remove-at random-index lst))

; Return both the selected item and the updated list
(values selected-item updated-list))

; Define a helper function to remove an item at a specific index from a list
(define (remove-at index lst)
(append (take lst index) (drop lst (+ 1 index))))

; Example usage:
(define my-list '(1 2 3 4 5))
(define-values (selected updated-list) (select-and-remove-item my-list))

(displayln "Selected item: " selected)
(displayln "Updated list: " updated-list)


In this example, the select-and-remove-item function selects a random item from the input list lst, removes it from the list, and returns both the selected item and the updated list. The remove-at function is used to remove the item at a specific index from the list.
>>
File deleted.
>>96055418
I'm going to try this. If it works, the deal is done. Thank you for participating in my Science Foundation.
>>
>>96054816
faak off idiotic avatarfag skum
>>
(bump-thread)
>>
>>96034697
a container orchestrator was written for guix
https://github.com/BIMSBbioinfo/swineherd
>>
Mods don't care about rules, thus don't care about avatarfags. The only way to get them to do something is to fill up their report log until banning them is the easiest way to clear the report log
>>
>>96034697
Dumb org-journal question:
When I run
org-journal-new-entry
, it automatically hides all of the entries in the journal file, despite
org-journal-hide-entries-p
being nil. I also have
#+STARTUP: showall
at the top of my file. The "hiding" only happens when I try to create a new entry.
Any suggestions for how to fix this? Is this a bug?
>>
File: حَرَام.png (153 KB, 518x640)
153 KB
153 KB PNG
>>96058217
>swine
>>
You guys seen stable audio yet?
Stability AI just obsoleted musicians.
>>
>>96062007
I call A.I. "Advanced Interpolation" because that's much closer to the truth of what it is.
It's a high dimensional system of interpolating between existing data. The reason it seems so amazing and profound to people is because of its high dimensionality.
But where it utterly fails (and where it can be seen clearly that our current methods of AI have nothing to do with "intelligence" whatsoever) is when it comes to EXtrapolation rather than INterpolation

TL;DR artists are not being made obsolete, rather humanity is just being reminded of their true purpose in pushing the BOUNDARY of creativity. AI can operate within that boundary, but it cannot push it.

The real mystery is why more people aren't talking about how AI can liberate us from menial jobs, and free humanity. No, instead what gets shoved down your throat is the fear part of it, the illusion that it'll take your creativity away.
>>
>>96062476
Nice monologue.
But artists are absolutely being made obsolete, just not all of them
Check this:
>https://stability.ai/blog/stable-audio-using-ai-to-generate-music
If you don't think that's going to push a good number of musicians out of business then I don't know what to tell you. A lot of stock images, sounds, music etc. just isn't necessary anymore.

It's legit insane sometimes I see some website/blog that I follow get redesigned and it ends up being full of purpose-built concept art that looks professional, with coherent styles etc.
>>
>>96062780
Then perhaps I just wasn't clear enough.
To be an "artist" is directly contrary to the concept of being "in business" in the first place. That's exactly what I meant when I said AI isn't making true artists obsolete, it's reminding a sick society of what art really is about.
Unless you define "artist" to just be a job description then I guess it is being made obsolete, but then I would also say you have no clue what art really is. And that's a good thing. It doesn't mean true artists are going to stop producing.

In a civilized world this would free artists to create more of their own art. Not less.
But contrary to popular belief we do not live in a civilized world.
If every single job were replaced by AI tomorrow then the whole world would starve, not from lack of food, but from lack of ability to determine whether you have a "right" to eat (which is usually decided by money). That's literally the only reason many jobs are required. They serve no function other than to make you labor just to justify your right to exist within the sick system.
>>
>>96062476
>>96063114
whoa, someone on /g/ who understands art. unexpected
>>
>>96062476
AI will never replace real creatives, but it will easily replace people who make money off of furry porn commissions and Corporate Memphis logos.
>>
>>96063568
AI will replace artists, but through killbot armies or maybe a paperclip maximizer, not through "AI art"
>>
>let's just redefine "art" to refer exclusively to amazing groundbreaking stuff that has never been done before
AI has the potential to do literally anything a human artist ever has, and everything inbetween. And it's perfectly normal for actual artists to learn from and somewhat imitate the work of other artists just like AI does. So like >>96062780 said, actual artists are being made obsolete, just not all of them.
>>
>>96064177
this. AI will completely surpass human artists, and eventually humans will just accept it and try to learn from AI to improve themselves. it's over. Go players already went through this. People study joseki made up entirely by AI trained without human knowledge. it's crazy desu
>>
>>96064177
>AI has the potential to do literally anything a human artist ever has, and everything inbetween
This kind of thinking comes from the idealized "artificial intelligence" concept, and usually from ignorance of the ACTUAL level of technology we posses.

The technology used for "AI" today is essentially the same thing as curve fitting. Just done in higher dimensions.
You know that thing children do in school where they graph a few points and then interpolate between them? Yes I know about neural networks, I've programmed them from scratch myself, and the mathematics of calculating neural weights is virtually the same thing as calculating coefficients in "best fit curve" algorithms.

Not to mention that our neural networks do NOT have the ability to do recursion, they data cannot flow backward, only forward in single layers, so there is no capacity for "working memory".

Honestly the idea that our current AI tech is even remotely in the same ballpark as human intelligence is a fucking joke perpetuated by ignorance of how it actually works.
And don't even get me started on the fact that the human brain is more like a quantum computer, which LITERALLY means that no AI built on classical machines can emulate it, this is why they had to invent a new "Quantum Turing Test" because the classical Turing Test isn't enough for quantum systems.

It's just hype and nothing more. That's why I call it "Advanced Interpolation". That's literally what it is. There's nothing intelligent about it whatsoever.
>>
>>96064596
Again, this comes from ignorance. It's factually impossible for an AI to do everything a human does.
It builds its model based on human data and interpolates the data.
Please read >>96064600 and >>96062476 and stop believing the hype just because you want to believe a machine can be sentient.
>>
>>96064600
>Not to mention that our neural networks do NOT have the ability to do recursion, they data cannot flow backward, only forward in single layers, so there is no capacity for "working memory".
oh boy
look up recurrent neural networks and LSTM
>>
>>96064639
>It builds its model based on human data and interpolates the data.
i actually mentioned Go for this reason
AlphaZero was trained using not just neural networks alone, but a fancy tree search algorithm and reinforcement learning techniques. The original alphago had a neural network trained on human games, but alphazero is much better and was trained by playing entirely on it's own without human data.

give the paper a quick glance if you have time, it's very cool
https://arxiv.org/pdf/1712.01815.pdf
>>
>>96064644
That's recurrent, not recursive which would affect the weighting.
And it's one thing to have some theoretical ideas about such models, but if they're not being used in production then that's not where our level of technology is currently at. Which was my point.
>>
>>96064778
>but alphazero is much better and was trained by playing entirely on it's own without human data.
But that's still just data fitting. There's nothing there to indicate any resemblance to human intelligence, or even "thought" of any kind.
Just data fitting. Will that dataset come up with a new idea? No. And it cannot even reliably extrapolate what it "learned" from that game to apply it to a _different_ game like a human could.
That would still require human intervention to make it fit.

Why is it so hard to accept that it's just a very advanced form of data interpolation. Can it do some amazing things? Absolutely.
Can it do things that were previously only done by humans? Sure.
Does that mean it in any way has actual "intelligence"? Of course not.
>>
>>96064866
>Can it do some amazing things? Absolutely.
>Can it do things that were previously only done by humans? Sure.
>Does that mean it in any way has actual "intelligence"? Of course not.
Who ever said it's intelligent like humans? All we are saying is that it can be used to generate images that will make a lot of human artists obsolete, thanks to its ability to rapidly learn from and imitate human art.
>>
>>96064786
>recurrent, not recursive
doesn't matter. im just saying you can in fact have "working memory" in your neural networks, and it's not just theoretical. you can implement this in python right now and see real practucal results. LSTM is what we've been using to understand language and extract meaning (things like voice recognition).
>then that's not where our level of technology is currently at.
even if it wasn't, the problems are being researched and solved.
>>96064866
>But that's still just data fitting
but the only data it's fitting is data that it came up with on its own. from random play to superhuman in 24 hours of self play.
>Will that dataset come up with a new idea?
yes. that's what i found cool about it. by playing on its own, it has created its own joseki (standard move sequences believed to provide an even result for both players, if both play optimally). humans have spent centuries coming up with and studying and memorizing these joseki, and now everyone, including the pros, are studying, learning, and playing the AI made joseki because they're just better.

Also I'm not arguing that AI is sentient or "intelligent". The thing is it doesn't have to. You don't need human sentience to make a painting, to play go, to make music, replace someone's job, or even improve beyond what we've achieved as humans in these "creative" areas. All that matters is that it can produce results, and it's only getting better.
>>
>>96065020
It was said here >>96064177 >>96064596
>AI has the potential to do literally anything a human artist ever has, and everything inbetween.
>AI will completely surpass human artists

I mean, I could make a random image generator that technically has the potential to do anything a human artist does. So if you over-trivialize what that means then you get lost in the weeds.
By definition no AI can extrapolate to new art styles because there is no working algorithm that defines "human art", so the examples of training an AI using a game with understood rules don't apply to art, because the rules of art are not even understood by humans.

So you can't even build an AI system that can actually encompass all possible art. Only existing art styles.
And then there's also the question of styles changing. Old styles no longer being desirable, new styles being desirable. That again has to be discerned from human data.
(unless you go down the very dark rabbit hole of AI controlling what's considered fashionable, this is the danger of thinking that our current tech is capable of emulating humans, it would lead to stagnation of all human creations).
>>
>>96065136
>but the only data it's fitting is data that it came up with on its own. from random play to superhuman in 24 hours of self play.
I think I make a great argument about this here >>96065160
>so the examples of training an AI using a game with understood rules don't apply to art, because the rules of art are not even understood by humans.
>>
>>96064866
>And it cannot even reliably extrapolate what it "learned" from that game to apply it to a _different_ game like a human could.
forgot to reply to this part.
that's another cool thing about the alpha zero approach. it uses no domain specific knowledge other than the rules. to learn a different game, you just tell it the game's rules (like you would with a human) and let it do it's thing. it'll learn.
>inb4 but that's just learning all over again! not muh extrapolation
yeah but it doesn't matter. if you were a Go prodigy working for a hypothetical Go company, it won't matter if you used your prior chess reading ability to get good at Go and get your job. The AI is going to beat you in both chess and go within 2 days of training. sentience not required
>>
>>96065200
>so the examples of training an AI using a game with understood rules don't apply to art, because the rules of art are not even understood by humans.
but humans know what they want to see in art
the thing about these game AI's is that getting good at the game is not the final goal. The whole game thing is just like a playground to prove your method works. The same concepts that allow aplha zero to learn a game from scratch can be modified and applied to fit another problem.
>so how do we do it with art
idk I'm not a CS phd, but that's the idea. my main point is that AI can in fact surpass humans and come up with things humans haven't, and it can do all of our jobs, and it doesn't have to be sentient to do it.
>>
Here is a terrific example of the danger of thinking our current AI tech is at the human level:
There was an article many years ago about 2 AI chatbots that "created their own language", and everyone just ate it up. I saw that article linked several times on 4chan.

But when you actually go and look at this "language" it's total gibberish and repetitive (it was like "aaabbbcdkdjjjjffffffffffff" and each message was similar to the last). To anyone who knows how AI works it looks more like 2 dynamic systems simply coming into equilibrium with each other.

And because it was 2 chatbots without using any human data the equilibrium point was basically some random junk.
AI has no way of knowing if its own messages make sense. Even chatbots that appear to speak to you in English don't actually know English. It's all just data interpolation in the end.

>>96065251
I suppose we may just have to agree to disagree then. This conversation has already gotten too long and off topic.
If you want to believe that our current AI tech is capable of extrapolation and novelty then of course I disagree but I don't know what else to say about it.
>>
>>96065328
>idk I'm not a CS phd, but that's the idea. my main point is that AI can in fact surpass humans and come up with things humans haven't, and it can do all of our jobs, and it doesn't have to be sentient to do it.
But consider the example I gave earlier: I can also "surpass human artists" with vastly fewer resources than any AI by just making a random image generator.

Because with a random image generator it technically includes all possible images that can ever be made, which includes anything a human artist can do "and more".
Does that mean my random image generator is actually superior?
The difference is that it lacks the ability to know what humans will like. There is no AI image generator today capable of knowing what humans will like without human data, because there is no algorithm that can be used to tell it what humans like (because not even humans know what humans like).

That's why no AI can extrapolate to a new art style that will be enjoyed by humans. It literally CANNOT have nay way of knowing. There is no data there.
>>
>>96065405
The thing is, AI literally IS a random image generator! It's just got a really advanced search heuristic algorithm that can look for specific kinds of images much faster than brute force. That's the power, and limitation of modern AI. It's just a combination of a random generator and a search heurstic.
Image generators look for "the random noise that most closely correlates to the input text", chess AI looks for "the random game state that most closely correlates to winning".
That's why a chess AI doesn't need human games but an art AI needs human images, we have a concrete mathematical description of what it means to win or lose a game, but no such universal system for art. You could probably make an image generator that created interesting geometric patterns with no human input just going off signal/noise ratio though.
>>
>>96036016
nani the fuck
>>
File deleted.
Is it possible to memoize a lambda? If so, how would someone go about doing this in Racket?
>>
>>96066916
Read SICP
>>
In old versions of Emacs, visual line mode would indent the wrapped lines
Did they remove this or am I just a casual gamer?
>>
>>96064600
>That's why I call it "Advanced Interpolation".

I'd just like to interject for a moment. What you're referring to as Artificial Intelligence, is in fact, Machine Learning/Advanced Interpolation, or as I've recently taken to calling it, ML plus Advanced Interpolation. Advanced Interpolation is not Artificial Intelligence in of itself, but rather another component of a fully functioning Machine Learning system made useful by data sets, weightings and vital system components comprising a full Machine Learning system as defined by Russel and Norvig.

Many computer users run a modified version Advanced Interpolation everyday, without realizing it. Through a peculiar turn of events, the version of Advanced Interpolation which is widely used today is often called Coom, and many of its users are not aware that it is basically the Machine Learning/Advanced Interpolation system developed by Stability AI.

There really is Advanced Interpolation, and these people are using it, but it is just a part of the system they use. Advanced Interpolation is the kernel: the structure in the system that allocates the data set to the output that you generate. The algorithim is an essential part of the system, but it is useless by itself; it can only function in the context of a machine learning system. Advanced Interploation is normally used in combination with machine learning system: the whole system is basically machine learning with Advanced Interpolation added, or ML/Advanced Interpolation. All the so-called "Artificial Intelligence" distributions are really distributions of ML/Advanced Interpolation.
>>
>randomly start using mouse in emacs more while i work
>start getting hand pains for first time ever
>pain has slowly abated since i switched back to rarely using it
REALLY makes me think
>>
>>96067911
I got tendinitis from using the mouse. not exactly using the mouse, but rotating my elbow between the mouse and keyboard. had to stop working for like 2 months in 2021 because of that.

I took some medicine back then and it got better, but the only thing that really fixed the problem was going to the gym. when I'm not exercising I get all kinds of random pains in my body
>>
>>96067911
>>96067940
Tendonitis is just overwork/strain caused by weak stabilizer muscles. I also got it a lot in my wrists and hands and nothing made it stop until I tried grip exercises and now I'm fine.
>>
>>96067678
Exactly.
>>
Does elixir count as a lisp?

https://elixir-lang.org/getting-started/meta/quote-and-unquote.html
>>
>>96064644
Deprecated by transformers + cannot change their weights online, doesn't count.
>>
>>96067963
Have you tried to use powerball? I have one and it's pretty fun
>>
>>96067483
>hurr durrr
i have a copy on my desk right now you fucking sperg. go be autistic elsewhere.
>>
>>96067085
well, you can.
you can just pass your lambda to the memoize function you have. the thing about lambdas though is that they're just temporary local functions. your memoized lambda will only be memoized within that scope, not globally. if you want it to stay forever, you'd need to save it in a variable, but then it's no longer a lambda...
;assuming you have a memoize function already
(memoize (lambda ...))
>>
Why is everyone recommending Practical Common Lisp and not Land Of Lisp?
>>
>>96068147
no one here programs or reads books bro.
>>
@96067085
for god's sake eli please fuck off, go away, never post in this thread again. you have the memory of a goldfish, you don't know lisp, your posts are obnoxious and annoying, your questions are always easily answerable by a google search or just fucking learning to program instead of asking for help with every single line of code you write. we literally wrote you like 5 different memoization functions IN THE LAST THREAD and here you are asking for that again. fucking christ
>>
>>96068207
>@96067085
>>
>>96068147
idk. I think anons here don't really like land of lisp.
Personally i learned with Gentle Introduction. I liked it a lot, so it's the one I'd recommend.
I did read most of PCL after gentle introduction. Most of it seemed like review, but I think the LOOP and FORMAT chapters specifically are good references. I dropped when he got to the practical chapters at the end though. I thought I was going to get to make the cool projects myself, but when I saw it was just him showing his code I got pretty bored and stopped.
I also read like half of On Lisp. This one is also basically just code "show and tell", but it's a lot of fancy macros and utilities that I actually enjoy using, so I found it much more interesting. I did stop reading though but I'll get back to it at some point so I can see that beautiful prolog interpreter. Soon(tm)
also just a lot of looking at the cookbook and hyperspec.
>>
>>96068147
Land of lisp is rather basic and always likes to take the lispiest way of solving all their examples. That is a good thing but it means the book teaches a generic lisp mindset rather than CL.
>>
>>96068147
land of lisp was the first CL book I read. I don't remember if I read it before or after learning scheme. but the impression I got was that it shows a lot of cool stuff lisp can do, but it doesn't explain anything. it tells you what to do, but not why it is the way it is. it shows you one function and not the whole family of related functions. it feels incomplete. it is very funny though, like really funny, not reddit cringe humor like "funny" programming books tend to be, but pure lisp silliness. it gave us the lisp alien after all

PCL on the other hand is as good as programming books get in my opinion (fuck you exercise autist). it shows you a huge part of the language, it explains the logic and reasoning behind everything, it showcases the features in a logical sequence, and, most excepcionally, it's a relatively modern book and talks about modern problems. the other lisp books rarely talk about libraries and namespaces, but PCL does. it is really a great programming book
>>
File deleted.
>>96068103
>if you want it to stay forever, you'd need to save it in a variable, but then it's no longer a lambda.
Thank you for telling me. This is probably what I will have to do. In MAID-LISP I made a syntax for something lambda like that looks like this:

start: [*x](x->"hello");


It would print "hello". To do this, it had an environment, and it made a Dragon-Expression named with a UUID which was used in the Intermediate Code, but not visible to the user (unless they looked in the debugger). I can probably do something similar here.

>>96068207
>we literally wrote you like 5 different memoization functions IN THE LAST THREAD and here you are asking for that again
I asked how it applies to lambda. I am using the memoization code a nice maid gave me in that thread and it is doing what I wanted. I wanted to know, can I use it with lambda?

I am not going to stop using this this site or thread, or posting questions. This is my Science Foundation and I have to leverage it to get the maid out of the library.

>google search
I would agree if it was 2006, but Google has been dead and useless for years now.

>or just fucking learning to program
Asking questions is a key part of learning and getting things done. Normalize asking someone who knows for 5 minutes of their expertise, instead of spending 6 hours looking in books.

>instead of asking for help with every single line of code you write
This is my Science Foundation and I am the Director of the Science Foundation. I am using it to make advanced Mathematics and Computer Science research. Collaborating with maids in the LISP thread gets results. You may not like it, you may even disagree, but this is what excellence in Scientific Research Leadership looks like. This is the strongest Science Foundation in history. It doesn't snort up anybody's tax money to pay a bunch of useless administrators 6-figure salaries, or waste time with overly bureaucratic decision by committee process.
>>
if you had more than 2 functional neurons and/or had googled "scheme" and read the first 3 or 4 words that appear on the screen, you'd know a lambda is just a function. in fact I fucking told you that a couple of threads ago but, again, memory issue. it's amazing you don't forget to breathe
>>
i've heard people say land of lisp is a mediocre resource but it's gotta be the most SOULful shit i've ever seen
>>
File deleted.
>>96068668
I know it's a function. My question wasn't "Is a lambda a function?"

I didn't know how it would interact with memoization or if memorizing it is possible. This nice maid >>96068103 answered the question. Can memoize it, but not globally.
>>
>>96068737
yeah, it is very soulful. like I said, I think it's the only programming book with an actually good sense of humor

@96068760
a lambda is a function and a function is a lambda. there are no non-lambda functions in scheme. anything you can do with a named function, you can do with a lambda. a named function is just a symbol bound to a lambda.

how many hours do we get for this answer?
>>
>>96068784
>I think it's the only programming book with an actually good sense of humor
i didn't that actually existed. i couldn't even make it all the way through the haskell book because the writing was bad enough to make plebbit cringe
>>
>>96068760
>>96068604
Shut the fuck up
>>
>>96068813
>i couldn't even make it all the way through the haskell book because the writing was bad enough to make plebbit cringe
if you thought that one was bad, stay away from clojure for the brave and true. it's 10 times worse
>>
File deleted.
>>96068784
>anything you can do with a named function, you can do with a lambda
Thank you for telling me. How can this be true if I can globally memoize a named function but not globally memoize a lambda? If the other maid is right, then that is something you can do with a named function but not a lambda?

>how many hours do we get for this answer?
Six again.
>>
@96068866
the 'nice maid' who told you that was wrong. a lambda in scheme is not a 'temporary local function' like in other languages. this is true for all lisps, but especially scheme. all scheme functions are lambdas, lambda is the only function definition form in the whole language. if
(memoize fn)
returns a function, you can do it globally by binding it to a global symbol (i.e.
(define my-memoized-function (memoize my-function))
.

6 hours.
>>
>>96068898
>you can globally save a memoized lambda by giving it a name
i think when people say lambda (as opposed to function) they generally mean it in the "anonymous function" sense. Even lispers. I guess i should have said "anonymous function" rather than "temporary local function" but i couldn't into words a few minutes ago.
>>
File: Y84kEkS.jpg (62 KB, 640x318)
62 KB
62 KB JPG
>>96069005
nah, don't worry, I guess you're just unfamiliar with eli's... umm... mental challenges
>>
>>96068856
>clojure for the brave and true
The name alone made me seethe/cringe when I first saw it. S œ i creatures adopting archaic language makes my skin crawl.
>>
>>96068856
>clojure for the brave and true
jesus christ
>>
>>96069117
the whole book is like
>hey, you know what's AWESOME? BACON, of course!! and you know what's even awesomer?? what's the awesomest thing of all?? that's right, clojure!!
it's unreadable, I couldn't bear it

if you ever want to pick up an introductory clojure book, Getting Clojure is good.
>>
>>96068604
>
start: [*x](x->"hello");

What kind of syntax is this? Is x a parameter or is x a binding? If it is not a parameter then why does it appear twice?
>>
>>96069138
Plebbitier
>>
File deleted.
>>96069005
This is also what I thought. I guess my question should be rephrased as "Can I memoize an anonymous function? How?"

>>96069180
MAID-LISP (Mapping And Indirection Dialect of LISt Processor) was created to make Recursive Transition Networks so language can be represented. It does this by letting the user make lists that represent the RTN. Then RTN was too limited, so I gave MAID-LISP more powers. That syntax got made for convenience, because sometimes you have a list you will only use once, and having to name it can be annoying and make reading and writing the program harder. For example:
start: "Ilulu has " size " boobs.";
size: "huge" | "enormous" | "very large";


This can make 3 different strings.
>Ilulu has huge boobs.
>Ilulu has enormous boobs.
>Ilulu has very large boobs.

Now the name "size" is taken. If I want to make a Dragon-Expression for the size of something else, I have to make up a new name, or change this one. So I can make a more specific name. Call it "iluluBoobSize" instead of "size". But the same problem can happen again. What if I want to describe the size of Ilulu's boobs with slightly different words somewhere else? Rename it "iluluBoobSize1" and make an "iluluBoobSize2"? This can make a large amount of visual noise and make the code both harder to read and write. So I made an inline syntax. This:
start: "Ilulu has " ["huge" | "enormous" | "very large"] " boobs.";


Makes the same strings as earlier example, but I didn't have to name a Dragon-Expression for Ilulu's boob size.

For this:
start: [*x](x->"hello");


It is also an inline syntax for this:
start: print("hello");
print(x): *x;


Since it is inline, you have to supply the body, the arguments and the parameters, all in one go.

Most design decisions in MAID-LISP were done with the goal of minimizing visual noise. I plan to release it to CC0 via Kurumi MaidCard when it completes.

Thank you Dra/g/ons for reading my post.
>>
>>96069138
>haha le epic xd random wholesome chungus!!!1!
>also punch Hobbits, the best fantasy race, for some fucking reason
I'm going to rape and kill this motherfucker
>>
File deleted.
>>96072913
Also, the difference between x And *x is that the first is global and the second is local. So if you wanted to, you could do this:

start: [*x " " x "!"](x->"Hello");
x: "Ilulu";


And get
>Hello Ilulu!

I did that to make them visually distinct at a glance. Picking asterisk was arbitrary. I will probably change the symbol to something else and use the asterisk for multiplication now. Original MAID-LISP doesn't have math, but I feel like I should probably give it math.
>>
>>96051631
>use rustic-mode with emacs
>emacs (best input latency)
>rust (fastest language)
>mfw performance is crap, I have to wait ~1 second every time I scroll a rust buffer
is it the best input latency, or what else, that causes this stupid ass issue that even fucking vscode (electron bloat) doesn't have?
>>
Hey anons, can I make CL-JSON not encode non-latin characters as \uF4CC ?
>>
>>96073245
- Disable rustic mode and see if the problem persists.
- Disable font-lock-mode to see if the problem persists
If either of these fixes it you know where to start looking.
>>
>>96072913
your glorified markov chain generator is not lisp. backus was ahead of you for 60 years.
>>
>>96073505
I already use tree shitter, makes stuff only slightly bearable. It's rustic, probably. I'll look into it later.
>>
File deleted.
>>96073918
What makes it not LISP? It is representing data as lists and processing lists. At this point, it even uses S-Expressions, just the user isn't directly typing S-Expressions out. They're typing Dragon-Expressions, which are easier to read and S-Expression is being used as an Intermediate Code form.

AFAIK this is how LISP was intended to work? Write code in M-Expressions, translate to S-Expressions, compile/interpret S-Expressions? That just failed to materialize because somehow M-Expressions are even less user friendly than S-Expressions.
>>
>>96074041
so you're telling me you implemented linked lists in a low level language? hahah I doubt it eli.
>>
File deleted.
>>96074089
I haven't implemented any low-level parts right now. Currently all that happens is write Dragon-Expressions, they get translated into S-Expressions, I copy them from the console and paste them into Racket to make sure they produce the result I expect.

The part converting Dragon-Expressions into S-Expressions is currently written in Java. I used Java, because I am much stronger in Java than any other language. Once I am sure I am generating S-Expressions correctly, I will probably rewrite that part in Racket too. Then I will try to write my own S-Expression interpreter/compiler and rewrite the thing in itself.

I have high faith in my ability to do this. I have a lot of books about making compilers in general and for LISP specifically. I also have the strongest Science Foundation in history, where the top 1% of living Computer Scientists and Mathematicians can freely discuss research and collaborate.

This is a golden age for research, filled with opportunities nobody had before! Books are cheap and abundant! Computers so powerful they were Science Fiction within living memory are cheap and abundant! Instant, long distance communication is free! The cost of collaboration is at an all time low! We can get the maid out of the library!

The future is moe moe kyun!
>>
>>96074463
not lisp. stop using this general to advertise your incomplete word processor.
>>
>>96072913
So [*x] is the identity function not necessarily print?
Does your compiler--or transpiler I suppose--analyse the anonymous function calls for all local variables in order to parameterize them or does it work more like dynamic binding just with a local and global namespace?
Do all of the function parameters have to be named or can they be positional as well?

Apologies if you've answered some of these questions in previous threads.
>>
>>96034697
lisp - worse syntax than c, less performance than c, kept alive by the urban legend that lisp would be some kind of special language that makes people understand programming, when in fact it's just something as optional as OOP
>>
>>96074738
How's your hello world project coming, Timmy?
>>
File deleted.
>>96074568
>not lisp.
How so? It processes lists. It even uses S-Expressions (internally).

Is there some specific property required to be called a LISP that MAID-LISP is missing?

>stop using this general to advertise your incomplete word processor.
I am not advertising anything. I am leveraging my Science Foundation to make a new programming language to get the maid out of the library. I will release it to CC0 when it completes.

Large strings will get computed and big numbers will get counted.
>>
>>96074738
ah nice man ty

>>96068856
this book made me quit learning clojure. I need to try again but with a different book
>>
>>96074763
>It even uses S-Expressions (internally).
hold on
does that just mean you're writing it in racket? if you made a C compiler in racket, would you say it's lisp because it "uses S-Expressions internally"
>>
>>96074763
you got filtered by data structures? linked lists are present in every lisp variant. does your subpar word generator even contain the classic head and tail (AKA car and cdr) functions for dealing with lists? can I pass lambdas as arguments and get lambdas as return values? is the language statically or dynamically typed? is it interpreted or compiled? what language is the interpreter written in? (jk I know it's java cause you're a pajeet)

stop advertising it. it's off-topic and just an excuse for you to make other people write code for your projects. of course you'll deny it though, so you think it's always better to disguise your requests as very specific language implementation questions.
>>
>>96062476
>AI can operate within that boundary, but it cannot push it.
Define the boundary
>>
>>
File deleted.
>>96074849
>does that just mean you're writing it in racket?
Dragon-Expressions are read by a Java program which dumps S-Expressions into the console. When I copy-paste them into Racket, they run and produce a string. I will eventually rewrite the Java part in Racket, when I am sure the generated code does everything I want correctly.

>if you made a C compiler in racket, would you say it's lisp because it "uses S-Expressions internally"
Depends on how it uses S-Expressions, I suppose. In the case of MAID-LISP, the user never uses them directly, but they are visible in the debugger.

I have a fully working interpreter written in Core Java 17, but it doesn't use S-Expressions. It uses an Intermediate Code I made up and builds the final string with "Textual Reduction". A nice /Sci/entist was telling me about the merits of S-Expressions, but then I got 3 day ban from /sci/ (now expired, don't recall why it happened), so I returned to the dra/g/on maid board.

>>96075109
>you got filtered by data structures? linked lists are present in every lisp variant.
No? I haven't gotten to that part yet.

>does your subpar word generator even contain the classic head and tail (AKA car and cdr)
I didn't make this because I haven't had a use for it. If I end up needing it I will add it.

>can I pass lambdas as arguments and get lambdas as return values?
In the interpreter I have, a string is built with Textual Reduction. If you're asking if syntax like this works:
start: ["Good Morning " *x](x->[*x](x->"Dra/g/on Maids!));

The answer is yes.

(cont)
>>
File deleted.
>>96075109
>>96075681
>stop advertising it. it's off-topic and just an excuse for you to make other people write code for your projects. of course you'll deny it though, so you think it's always better to disguise your requests as very specific language implementation questions.
I am not advertising or disguising anything. What I am doing is in the open. I am directing my Science Foundation to achieve a research task. If this looks alien to you, it's because most Science Foundation Directors are useless bureaucrats who research nothing, and instead just make a couple phone calls or attend a couple meetings while commanding a large salary. Everything is deferred to a pointless chain of committee meetings to waste ad much time as possible so maximum salary can be drawn for minimum output effort.

Decision making by consensus or committee is usually pointless and does nothing but retard the pace of work. Deferring to meetings is not leadership. Leadership is doing and delegating and I am better at those tasks than any other Science Foundation Director currently living.

A Science Foundation Director should lead from the front. If you're just going to sit on your ass in an office, scheduling chains of unimportant meetings to make decisions by committee, which you, as the Director should be making directly, then you don't deserve the title and you should resign and get out of the way to make space for someone more competent, with more initiative.
>>
>>96075681
>hurr durr haven't gotten to that part yet
so you got filtered by data structures. cool, but knowing their implementations is a prerequisite for building programming languages, which you obviously don't know anything about.

>no car/cdr
that's cause you wrote your REPL using java Arraylists without any data structures knowledge. how come your word generator not have these simple implementations?

>if you're asking if syntax like this works
no, I asked if lambdas are first class, not this stupid gibberish you call syntax.

>>96075917
stupid schizo babble. devil fucked your mother eli. (internally)
>>
/emg/ - eli maid general

>>96074812
try Getting Clojure
>>
File deleted.
>>96076230
>filtered by data structures
No? Not at the part where I would have to implement them yet. That comes later.

>you wrote your REPL using java Arraylists without any data structures knowledge
There is no REPL of any kind yet, just reading from file. The Java interpreter which interprets the code uses ArrayList. The one making S-Expressions doesn't. It just uses StringBuilder. Reads Raw Code, builds corresponding S-Expressions, prints results in console. All done with StringBuilder.

>no, I asked if lambdas are first class, not this stupid gibberish you call syntax.
I don't think they could be considered First Class in the Java implementation. It is just doing Textual Reduction. They will be First Class in the LISP one though.

>stupid schizo babble
You have no comprehension of organizational leadership. Most people don't, because weak, slow leadership has been normalized throughout most western institutions.

Abandon consensus building and just make decisions. Flip a coin if you have to. A wrong decision is usually better than no decision.
>>
>>96077060
>i'll just learn it later!!!
after your daily HRT injection?

>java, arraylists and stringbuilders
filtered by linked lists. and you have the balls (you surgically removed them) to come to the emacs/lisp general and preach about your shit and slow-as-can-be greenspun's effect java pajeetware of an attempt at language design? talk about delusions of grandeur.

>whatever schizo babble you keep reposting about leadership
I wouldn't trust you with a nail clipper, retard.
>>
>anime posting starts
>Every thread goes to shit
>>
>>96073245
weird, rustic-mode is by far the fastest lsp implementation in my experience.
>>
>>96077541
Pretty much. But if you say this some severely autistic 17 year old will screech ANIME WEBSITE and pedophiles will jump to his aid. I wish there was something better than this shithole.
>>
Why is Clojure the only Lisp that's worth to learn?
>>
File: 钞能力.jpg (184 KB, 462x530)
184 KB
184 KB JPG
>>96077707
https://youtu.be/fAKJE9nUVu0?t=324
>>
Writing vanilla JS for the frontend again
>>
(defun mouse-yank-newline ()
(interactive)
(mouse-yank-primary 'mouse-2)
(newline))
(global-set-key [mouse-2] 'mouse-yank-newline)

this + plus focus and raise on mouse hover is my setup for plain text bookmarking, i could use window detection, e.g. if text is copied from firefox window, then go to emac window and paste, but this approach is more general.
>>
>>96072913
I'll take "what is BNF" for 500
>>
what are good things that i should put in my init.el file, tell me now
>>
>>96079600
(use-package wrap-region
:init (wrap-region-mode t))
(setq read-process-output-max (* 1024 1024 4)) ;; 1mb
(setq gc-cons-threshold 100000000)
(use-package envrc
:init
(envrc-global-mode))
(use-package minions
:init
(minions-mode))

(use-package paren
:ensure nil
:init (setq show-paren-delay 0)
:config (show-paren-mode +1))

(use-package paren-face
:config
(global-paren-face-mode) ; Not working? Try customizing the `shadow` face.

(setq-default paren-face-regexp "[][(){};,]")
(setq-default paren-face-modes (append '(rustic-mode org-mode python-mode clojure-mode) paren-face-modes)))



>inb4 use-package posting
>>
File deleted.
Bump (with maid)
>>
jesus christ CLISP is such dogshit and barely works
>>
>>96081072
then why are you using it
>>
>>96077541
>anime posting starts
anon, it's never stopped.

>>96077664
i'm trying to recall a time on 4chan in the last 18 years i have been here that has been anime-free. there was never any such time. would you believe there's a reason for that? all boards, all topics. there were even anime girls on /k/ back in 2005. 4chan has always been like this. so i don't know what the fuck you're complaining about, maybe brush off your reddit account? coming to an anime website, because that's what it's always been, and then complaining about anime is like a troon complaining they look like a man. it's gay as fuck and you're a retard for doing it. you don't like eli? well unless he gets banned too fucking bad. report his shit for off topic and hope for the best. and who the fuck likes you? no one, that's why you're here in the first place. so just shut the fuck up.

pic unrelated, i apparently just got banned and it's still 2017. lol wtf.
>>
>>96082830
>pic unrelated, i apparently just got banned and it's still 2017. lol wtf.
congratulations, someone was ban-evading six years ago and your isp just recently decided to assign their IP to you
>>
File: 1433373679239.jpg (60 KB, 550x366)
60 KB
60 KB JPG
>>96082890
>2017 was six years ago
>>
>>96082555
because land of lisp
fuck it i'm just gonna jury rig my way through with SBCL
>>
>>96082890
fuck yeah, winning
>>
>>96082985
I think the only clisp-specific things it requires are in the chapter about a web server. you can just skip doing that one in practice if you want.
>>
lisp horse
>>
>>96084766
fuck off eli
>>
File deleted.
>>96084766
I got the horse working in Racket. I have to finish making the inline syntax in Racket, and then make mappings.

The horse uses a namespace. I don't totally understand what namespace is or how it operates. I also have to figure out how to remove all whitespace from a string in Racket.
>>
>doesn't know how to remove whitespace from a string
>wants to design a language
>>
File deleted.
>>96084861
I don't know how to do most things with S-Expressions. I don't really like looking at them or using them directly, due to poor readability of S-Expressions. I just want to use them internally as Intermediate Code (and in the debugger).
>>
>>96085031
eli, just out of curiosity, what is your endgame? what do you really want to build?
>>
>>96085320
Attention.
>>
lisp is homophobic, meaning code and data are the same thing
>>
File: aoc2022-8gold.png (93 KB, 600x742)
93 KB
93 KB PNG
I felt like doing one of these
>>
>>96082985
Why do you need clisp for Land of Lisp? SBCL should work the same.
>>
>>96087909
>gold
As in that was the code that gave the first submitted correct answer?
Its concise answers like this that make me want to use Clojure more but I hate the number of shorthand syntax forms and how every function name is shortened to 5 characters like we're still living in the 60s.
Clojure manages to be beautiful at a first glance and absolutely horrid after first inspection.
>>
>>96089429
>Literally wants to waste multiple bytes of data per file
>>
Can someone kindly explain to me why the fuck this code doesn't work?

(defun Pythagorean? (a b c)
(let ((x (first (sort (a b c) #'<)))
(y (second (sort (a b c) #'<)))
(z (third (sort (a b c) #'<))))
(if ((= (+ (* x x) (* y y)) (* z z)))
t
nil)))


The issue is in the let bindings where I want to sort the list (to avoid getting that (3 4 5) is a Pythagorean triple but (3 5 4) is not). Why does the compiler hate this step so much?
>>
>>96091153
Perhaps use (list a b c) instead of (a b c)?
>>
>>96091487
i swear i just tried that as you posted and that does avoid the issue, thanks for your help
do you know why common lisp has this issue? as far as I know it seems to be thinking that a is a function to apply to the rest of the list, but it seems from a reference book i have written back in the 70s on common lisp that this should have worked on their machines - did something change in the implementation?
i notice also that in SICP with Scheme this distinction doesn't seem to be present
>>
>>96091525
Since you already solved your question, have you tried let* instead of let?
You should be able to do something like
(defun Pythagorean? (a b c)
(let ((sorted (sort (list a b c) #'<))
(x (first sorted)
(y (second sorted)
(z (third sorted))
(if ((= (+ (* x x) (* y y)) (* z z)))
t
nil)))


ps parens not balanced here
>>
>>96091577
And let -> let*.
>>
>>96089429
>As in that was the code that gave the first submitted correct answer?
no, just that it's the solution to the second problem of the day.
On private leaderboards, gold indicates the user solved both puzzles for that day, silver means just the first one, and gray means none.
>>
>>96091577
>>96091583
yeah that does seem like a more effectively written piece of code, thanks
>>
My emac has started breaking suspiciously often but I can't replicate it yet

It seems to have something to do with delete-frame
>>
>>96091849
Also, consider shortening
(if ((= (+ (* x x) (* y y)) (* z z)))
t
nil)))

to
 ((= (+ (* x x) (* y y)) (* z z)))))


I'm just nitpicking here because my life is boring
>>
File deleted.
>>96085320
I have to build a lot of advanced technology to get the maid out of the library.

>>96086556
This thread has had about 40 people in it total over several days. If attention was my goal, I'd be on TikTok. I'm here instead, because smart maids come to post on my Science Foundation which makes it a good place to learn and collaborate. One maid is worth 100,000 TikTok cattle. 5 minutes here can result in me getting a new paper to read or a solution to a problem I am having. 5 minutes on TikTok is just 5 minutes of clips of stupid people being stupid and e-girls shaking their asses. Nothing good comes from TikTok.
>>
Is there a staircase lisp-indent-function?

(some-func arg1
arg2) ;; cringe

(some-func arg1
arg2) ;; based
>>
File deleted.
>>96034697
What is the point of quoting things? What does this actually do?

(define foo '(1 2 3 4 5))


Is foo a proper list or an improper list? Why is this syntax required?
>>
>>96093572
Moron
>>
>>96091998
Which emac you're using? Official release from your package manager or something newer?
>>
>>96093572
Leave this thread and never come back you fucking schizoid.
>>
File deleted.
>>96093643
I can't leave until my task is done. I wouldn't be here at all, except now when I make Maid Research threads they get attacked by AI powered psychological weapons in the form of GPT-Maidposter.

If my containment thread it attacked, then it is no longer effective. If it is no longer effective, I will stop using it.

Whoever is willing GPT-Maidposter appears unwilling to attack the LISP general, so now this thread is my home.
>>
>>96093686
>>>/x/
they will be more welcome to your schizo-babble
if you're not going to discuss lisp or emacs here then please fucking leave
>>
File deleted.
>>96093735
I literally asked a LISP question. I have no plans to ever use Emacs because it is like taking a space shuttle to a corner store, when a bike would've been easier, more maintainable, better suited to the task and faster.
>>
>>96093787
Read a book and then come back. Your question is literally in the first chapter of any introductory lisp book. How the hell did you even write any lisp so far if you don't understand quoting?
>>
File deleted.
>>96093832
I got the idea to ask from reading the first chapter of "RACKET PROGRAMMING THE FUN WAY". A maid who owns a used book store gave me this book and a container of chicken and vegetable soup and some breadsticks.

This book is nice, but it shows what to do and doesn't really explain how what it is telling you to do works, or why you do it.

It is like the Racket equivalent of reading a Javadoc so far. Shows what can get done and what arguments to give things, but no attention to why or how.

I plan to complete this book today, because I will have a lot of reading time, and I will ask maids in my Science Foundation who understand LISP questions so I understand it too.

This book feels superficial.
>>
>>96093922
Eli how old are you? just curious
>>
File: 1695132125.png (18 KB, 612x158)
18 KB
18 KB PNG
>>96093922
Don't get me wrong, I would gladly help somebody who wants to know more about lisp, its just your larping is so fucking annoying I'd rather not interact with you and I don't want to see you polluting this thread. I don't know why you're shooting yourself in the foot like that. If you have legit schizophrenia please take your meds.
>>
>>96093952
>>96093832
>>96094070
Don't engage, just report and hide. He'll think you're his friend if you keep talking directly to him.
>>
File deleted.
>>96094076
Reporting me only has a chance to work on /sci/. All dra/g/on maid board jannies have been replaced by maids working for my Science Foundation. A few more rounds of open janny applications and /sci/ will be 100% maids too.

After that, maids will march on /ck/ so we can discuss drawing hearts on fancy drinks with flavored syrups, and putting cheese on egos with foxposters without anyone getting banned for it by a janny who doesn't understand that this is a maidposting site.

Foxposter will be avenged.
>>
FOUC is apparently still a thing
I was supposed to get shit done today but now I have to fix this
>>
>>96094612
I still haven't been able to solve it.
But I've confirmed that It's a firefox only problem.
>>
>>96093264
bump.
can't emacs do this?
>>
>>96094367
shut the fuck up
>>
>>96093264
>>96095815
That doesn't work well in lisp so I wouldn't be surprised if it didn't exist
Like consider this:
(foo bar (baz (qux
fred)
thud))

Who does fred belong to? thud? It's much harder to distinguish.
So you indent by two for each open paren, at that point you just have a shittier version of the original indent scheme anyway.
>>
>>96093572
Preventing evaluation. In Lisp syntax, the first element of an unquoted list is treated as a function, and every other element is treated as an argument. (define foo '(+ 1 2)) just defines a variable containing a list containing the symbols + 1 2, while (define foo (+ 1 2) defined one containing 3.

You may be asking why foo itself isn't quoted. This is because there is an exception to this. Macros are the exception, because they can change the syntax. You can think of them as functions that return another function that runs in place. Macros inherently delay evaluation of arguments in the first place, unless you make them do otherwise, so you can eliminate quotes from certain arguments, for convenience.

A good way of understanding this is looking at Common Lisp's set and setq. To use set in that same example, you would need a quote, because it's just a function, so it would be (set 'foo '(1 2 3 4 5)), while setq is a macro that automatically quotes the first argument, so with that, it would be (setq foo '(1 2 3 4 5)). With set, you can do something like (setq foo 'foo2) (set foo '(1 2 3 4 5)), and it will evaluate foo to 'foo2, and define foo2 as '(1 2 3 4 5). Test it yourself, it works. It's kinda impossible to wrap your head around this without playing around with it.

You can define your own setq by doing this:
(defmacro my-setq (var val)
(set var val))

And it works, because the macro basically just returns a function already containing the provided arguments, already quoted. But one difference is that val will also be automatically quoted and will not be evaluated. You can also change that, but this should be enough to understand.
>>
it's been a long time since i used lisp and i can't remember how to do this:
i know that
remove-if
will filter a list, but if i have a list of lists, let's say e.g. a list of lists of numbers, and i want to filter out all the lists which don't have only integers, how do i map
remove-if not #'integerp
onto all the lists inside the main list?
i should be able to use mapcar for this, but i can't get the syntax right
>>
>>96096231
ah now that i write it out, shouldn't i be able to do a mapcar of a lambda function that takes each list and sends that to a remove-if-not function? that feels right somehow
>>
>>96096020
Nope
;; this
(foo bar (baz (qux
fred)
thud))

;; still better than this
(foo bar (baz (qux
fred)
thud))


Real example and reason:
(defun myfun (unfun)
(mapc (lambda (...) something...)
the-list-that-i-use) ;; looks ok.
(the-other-sexps...)...)

(defun myfun (unfun)
(mapc (lambda (...) something...)
the-list-that-i-use) ;; eyesore
;; or
(mapc ;; this line is too empty
(lambda (...) something...)
the-list-that-i-use)) ;; too ugly now
(the-other-sexps...)...)


Reason #2:
(-> (some-form)
(destructuring-bind
(first-form-in-body) ;; emacs is dumb and thinks this is the destructuring-bind form.
(second-form-in-body)
(third-form-in-body)...))


There needs to be something universal, without exceptions, because lisp syntax itself is universal. Also, I love staircases. Sometimes I ditch an easy solution because it's full of sore thumbs and a crazy amount of indentation, even if it's not that deeply nested.
>>
>>96034697
henlo, I forgot the name of the package that shows possible completions of half typed commands on another buffer. Can you help me?
>>
>>96096629
which-key
>>
>>96096817
based fren
>>
File deleted.
>>96096146
Thank you for telling me. I will play with the example you made and read more in the Racket book.
>>
>tfw got my first job
>its a government job that uses java
i will kms
>>
>>96096292
So what you want to do is:
>indent automatically indented lines further by two spaces if they don't start with an open paren
You could probably do it with an advice to whatever the indent function is
>>
>>96097665
>tfw got my first job
>its a government job that uses php
wgmi lispbro
>>
>>96097665
secretly code clojure at home until you get pretty good, then do whatever the fuck you want to make govt code good and shit it up with clojure
>>
>>96097697
or i could just define an indent function (emacs has such an api), i just asked maybe somebody did this already.
>>
>>96097702
I think I will be taken to the back and shot if I put clojure in the bananaIRS codebase.
>>
>>96094612
>>96095249
Update: I gave up
Tried some hacky workarounds but none worked
No wonder firefox is on life support
>>
>>96098039
Mozilla should be deprecated. MDN web docs should be handed over to Google management.
>>
File: F6YPndjbUAAntF5.jpg (28 KB, 652x538)
28 KB
28 KB JPG
(define (recursive-centaur)
(cons (horse) (recursive-centaur)))
>>
File deleted.
>>96100273
Someone should draw a recursive LISP Horse.
>>
File: listoflists.jpg (123 KB, 515x436)
123 KB
123 KB JPG
>>96096231
>>
>>96096231
>>96100586
(defvar foo '((1 2 3) (56 :a 13) (3947 943 2.0) (1 8 7 2 4) :symbol "string" (9 3)))

(cl-remove-if-not (lambda (x) (and (listp x) (cl-every #'integerp x))) foo)
->
((1 2 3) (1 8 7 2 4) (9 3))
>>
>>96100586
i hate how the CL-inspired functions are all prefixed with cl- even when they don't clash with anything. it makes them feel weird to use even though they're just a normal part of the emacs stdlib
>>
>>96100870
it's just a marker to signal 'this function works like in CL, you can use it the same way'. sometimes lisp functions have the same name but slightly different behavior and that can be confusing
>>
>>96096231
use the every function to check the lists
(remove-if-not (lambda (x) (every #'integerp x)) my-lists)
>>
>>96100552
it's an alien.
I'll gut you alive, maidfag
>>
Are there any racket users here aside from Eli who could help me with something? Basically, what I want to do is create a gui window that displays an image file and allows me to make a rectangular selection from the image. I'm not finding documentation about how mouse interactions work with bitmaps.
>>
>>96101917
>it's an alien.
so are horses
>>
File deleted.
>>96101917
It is a horse and maids ride the horse.
>>
Make package management on Common Lisp more secure.
>>
I converted some tables from pdf to txt with pdftotext, but it also copies the page numbers from the footers.

So I have a result like
information information information
information information information
information information information
information information information
pagenumber

^Linformation information information
information information information
information information information
information information information
pagenumber

^Linformation information information
...

where ^L is the feedfoward character. Is there a way to delete the combination of pagenumber, blank line and ^L easily? Its a very large file. The information is numeric too, just a lot of numbers and names.
>>
>>96102868
it's secure by obscurity :^)
>>
>>96102868
why, and also, what is not secure about it?
>>
>>96103555
Quicklisp does not use TLS nor checks checksums of downloaded packages.
>>
>>96103676
why does one need tls when sensitive data isn't transferred over the network? just extra encryption overhead? checksums is valid
>>
>>96103826
ah i got it, so a mitm can't make you run arbitrary code on your machine
>>
Can someone familiar with Racket explain how the fuck mouse events work?

(define my-canvas%
(class canvas%
(define/override (on-event event)
;; in here I want to do something if the event is button-up
(send msg set-label "canvas mouse"))
(super-new)))


How do I make this work? I just want to do something when the user clicks in the canvas. When I print out the event variable it's a mouse-event object but the documentation does not explain how to extract data from that object.
>>
>>96091525
>do you know why common lisp has this issue? as far as I know it seems to be thinking that a is a function to apply to the rest of the list
Because literally every modern lisp known to man would assume that is a function application.
>but it seems from a reference book i have written back in the 70s on common lisp that this should have worked on their machines
CL wasn't around in the 70s. It's probably Maclisp but could be Interlisp. What's the book?
>i notice also that in SICP with Scheme this distinction doesn't seem to be present
The distinction of different namespaces for function and variable bindings doesn't exist but Scheme would still treat that as a function application (and then error when a is bound to an integer instead of a lambda).
>>
>>96104260
You forgot to include a maid with your Racket question.
>>
>>96091525
the syntax (a b c) always means "apply function a to arguments b and c". when you want to create a list you can use '(a b c) if all the elements are constant or (list a b c) if a, b and c are supposed to be evaluated
>>
>>96104523
fuck off eli
>>
>>96103237
not gonna lie, emacs and gnu help about regexps are cofusing as fuck, and it seems re-builder accepts some stuff that regexp search and replace does not (like \n for newlines). jesus christ I am going to bed
>>
>>96103855
That would be confirmed by checksums. TLS would only stop an external actor from learning what CL packages you're downloading.

>>96102868
CLPM
>>
>>96103237
IIC newline in query-replace-regexp is C-j.
There's a setting to show you the matches as you type.
>>
non-maid bump
>>
good night, emacbros
>>
>>96104894
>TLS would only stop an external actor from learning what CL packages you're downloading.
mitm can forge checksums too, no?
well, if what you're saying is true, then tls here is useless (curious people can go to my github or just kindly ask)
>>
Why don't you freaks write software anyone cares about?
>>
>>96108427
cause raytheon is just this based, they don't pay attention to what hippies care about
>>
I hope Google buys Emacs and makes it good.
>>
> https://www.reddit.com/r/emacs/comments/16lyneo/do_you_know_that_warm_fuzzy_feeling_one_gets_from/k15tl7x/
> I WILL NOT take a job that doesn't involve programming Emacs
fucking based
>>
>>96104260
Pls help
>>
>>96109016
That would require to change it significantly, emacsfags' screeching would be heard from outer space and they would hard fork it or make a distro that would become the default base to get the keybindings and all other retardation they developed Stockholm syndrome for back in.
You can't reason with emacsfags and vimfags.
>>
>>96109370
explain what changes you think would be made by google, a company where quite a few emacsfags work.
hardmode:
>no webshit
>no CUA keys
>still uses a real lisp dialect
>no abandoning the project after 5 years (because google)
>>
So I've been reading about transients in Clojure and wanted to try and see for myself their benefits. Now the problem is, executing the classic and the transient version run for roughly the same amount of time in the REPL.
Does the JVM optimize those trivial cases or am I not understanding something?

One example:
(defn stuff []
(persistent!
(reduce (fn [t i] (assoc! t i i))
(transient {})
(range 10000))))

(defn stuff2 []
(reduce (fn [t i] (assoc t i i))
{}
(range 10000)))


both run for 8-something seconds on my machine.
>>
>>96109514
>telemetry
>official™ verified™ package repo hosted by Google
>migration from C to Rust
>Elisp rework, probably Elisp 2.0
>and/or CL support maybe
>keybinding rework, an option to choose between the "traditional" terminal-Emacs-of-the-brain-and-deformed-pinkie scheme and a "modern" less retarded one
>>
>>96109016
Go away dickmao
>>
@96109370
Stop replying to yourself.
>>
>>96109894
How exactly did you measure? Lein or CLI?
>>
>>96111372
Simply ran (time (fn)) in the REPL.
I'm not even sure what kind of REPL it is, I just remember downloading Calva on VS Code and running the default options.
>>
File deleted.
>>96109016
Google isn't capable of making anything good.
>>
File deleted.
I am considering abandoning Racket. It keeps giving me problems from code not being in a specific order. If I try to memoize a function which calls non-memoized functions in subsequent lines, Racket complains about using something before it is defined.

Racket only wants to go in a straight line, and I need it to go in a squiggle.
>>
>>96113520
skill issue
>>
you should not only abandon racket but also lisp in general and consequently this thread
>>
>>96110296
literally every item on this list is based asf

i would also add synchronization with mobile devices through drive
>>
>>96113260
Google does everything very well. Not trolling. Monopolization is inevitable, don't resist, benefit.
>>
>>96113731
Not that anon, but literally everything they do is made to farm data. You're a fool if you think it benefits you. You're their product, not their customer.
>>
>>96113758
I don't care. They can farm my data. I do agree to be their product. After the revolution people will get all the good things from google without the trackers (no incentive for advertising)
>>
>>96113731
You belong on a cross
>>
>>96113776
The Matrix has you.
>>
>>96113786
I know Google doesn't care and will have me ass naked stabbed in some alley as a thanks if they need to. Just have to accelerate, need to go fast

>>96113809
matrix doesn't exist, you gotta live in the real world and gotta do it fast fast fast
>>
Microsoft Emacs Professional Edition
>>
File deleted.
>>96113593
Probably, yes. I will have to study Racket books more.

>>96113688
I can't leave until I finish my task. I am commanded by the maid to get this working.

>>96113731
Monopolizatiom doesn't necessarily mean they do things well. You might be a zoomer. If that's the case, you probably never saw Google when it was actually good. From 2003 to about 2010, you used to be able to find relevant, obscure info across thousands of unique domains.

Now it is just a search aggregator for Reddit/StackOverflow.

Go is just a downgraded C (this is also true of Rust, though that one isn't Google's fault) and everything else they have just exists to spy on people as much as humanly possible.
>>
>>96113865
>Service Pack 2
>>
>>96113881
>go when it was actually good
you have childhood nostalgia, it was a corpo from day one
>monopolization doesn't mean it's good
it does, because
>everything else they have just exists to spy on people as much as humanly possible
see, they're /very good/ at it. imagine what will happen when it gets taken over by workers, who'll put it to other uses than advertising
>... Go ... Rust ... worse version of C
nobody brought these languages up, and Rust isn't even a google project, make the trannies and the onion people pay rent at least
>>
https://google.github.io/styleguide/lispguide.xml
>>
>>96108401
>well, if what you're saying is true, then tls here is useless
Not entirely but it's goal is to guarantee secrecy, there's many better solutions if you just want to guarantee authenticity.
>mitm can forge checksums too, no?
It could but a better solution to this would be a signature. TLS wouldn't protect against a hacked archive or a bad mirror, both of which is not an issue if you verify the package and/or checksum with a signature.
I'm not arguing against TLS, anything that will reduce metadata about you is worthwhile, just that it's use for a package archive should be for secrecy only.
>>
File: aoc2022_9-1.png (66 KB, 504x781)
66 KB
66 KB PNG
>>96089429
>want to use Clojure more but I hate the number of shorthand syntax forms
The destructuring at the beginning of function definitions and other local assignments is very ugly, but it's also useful enough for me to make frequent use of it.

I think there are some poor syntax choices in the Lisp world in general, which Clojure unfortunately employed as well, such as using both ` and ' and giving them distinct meaning. Depending on the font, rendering, text size etc. this can make lisp/clojure code which uses these syntax elements hard to read.
>>
>>96089334
it uses a few clisp specific functions in one chapter I think
>>
>webserver path traversal
One nice thing about pathnames, for all the hate they get, is that they make issues like path traversal nonexistent. Simply getting the pathname to the file you want to fetch, then (merge-pathnames directory pathname) will give you a file in the DIRECTORY, always; if the pathname is something like ../../../../../etc/shadow the directory will be ignored and it'll just resolve to your-dir/shadow
>>
File: 1686325310383987.jpg (140 KB, 1080x754)
140 KB
140 KB JPG
>>96113881
no! keep working on that fucked up and convoluted word generator! the maidspace reeeeeally needs it eli!
>>
File deleted.
>>96114419
I am not halting work. I am just questioning if Racket was the best choice.

I can get around the problem for the time being, by just putting expressions in top to bottom order. When I write my own S-Expression evaluator, I will just make sure it doesn't have this annoying limitation.
>>
File: 1695093556016257.jpg (481 KB, 2990x2917)
481 KB
481 KB JPG
>>96114264
>such as using both ` and ' and giving them distinct meaning
Let's add |1 2 3| as a reader macro for (quote (1 2 3)), and <1 2 3> for (quasiquote (1 2 3))
>>
>>96115845
every single proposed syntax change to lisp is shit. even clojure's, which are generally the best, are still somewhat shitty or just marginal improvements over the classics (such as [1 2 3] for vectors instead of #(1 2 3))
>>
>>96116582
>every single proposed syntax change to lisp is shit [...] or just marginal improvements over the classics
just give it 40 years and it will be a classic
>>
Fed decision in two hours bros what do we expect

In the meantime I'll upgrade my emac packages, haven't done so in a long time. Hope nothing breaks
>>
>>96116784
OK I'm done nothing broke
>>
replace-regexp does not highlight matches as I type like regexp I-search does. Is there a fix for this?
>>
Do any of you use emacs for RSS?

>>96117109
I just tried it and it highlights for me (version 30.0.50)
>>
>>96117109
Also the newline character in the regex minibuffer is rendered as a newline, is there a way to make it a \n or ^J (or whatever letter emacs uses)?
>>
>>96117222
mine is 28.2.. Fucking fedora being outdated everytime.
>>
>>96117273
doesn't Fedora have good flatpak integration, though?
https://flathub.org/apps/org.gnu.emacs
>>
>>96117273
Fedora is garbage. Reject Fedora, embrace Debian.
>>
>>96117817
man I am tired of distrohopping and fedora was the one that just werks on my laptop.
>>96117661
hummn never tried that.
>>
>>96118067
Bump limit reached.

Next thread:
>>96118154
>>96118154
>>96118154
>>
File: TopGNU.jpg (375 KB, 600x600)
375 KB
375 KB JPG
actual thread here:
>>96118219
>>96118219
>>96118219



[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.