@PaniczGodek@functional.cafe
@PaniczGodek@functional.cafe avatar

PaniczGodek

@PaniczGodek@functional.cafe

I like cycling, swimming, pizza, ice cream, comics, computer games and Lisp programming in Emacs.
Currently I'm developing #GRASP - the GRAphical Scheme Programming environment for Android, Desktop and Terminal

This profile is from a federated server and may be incomplete. Browse more on the original instance.

daviwil, to scheme
@daviwil@fosstodon.org avatar

Streaming Day 4 of my Spring Lisp Game Jam project right now!

Today I'll start implementing a minimal, Scheme-like scripting language for the monsters in the game. We'll finally start to see it become somewhat playable!

Check out the game here:

https://fluxharmonic.itch.io/lambda-dungeon
https://codeberg.org/daviwil/lambda-dungeon

Join us on YouTube:

Restream is not cooperating today so the Twitch stream is down!

PaniczGodek,
@PaniczGodek@functional.cafe avatar

@daviwil FWIW I have an implementation of A* for Guile here:

https://github.com/plande/grand-scheme/blob/master/grand/graph.scm (called "optimal-path")

It uses some of the (grand scheme) syntax, namely the matching variant of lambda, matching variant of the and-let* form and the "is" predicate combinator, all of which are defined here:

https://github.com/plande/grand-scheme/blob/master/grand/syntax.scm

(be careful though, because it shadows some of the core bindings, including lambda and define)

PaniczGodek, to Lisp
@PaniczGodek@functional.cafe avatar

Let the Spring #Lisp #GameJam 2024 begin!

#springlispgamejam2024

PaniczGodek,
@PaniczGodek@functional.cafe avatar

@cadar

  1. What Lisp programming languages do you use?

Nowadays I mostly use Kawa. I used to be a dedicated Guile user, for which I developed the (grand scheme) glossary, and I still use it occasionally for small things, but I'm now developing a project that relies heavily on Kawa (#GRASP).
I sometimes use Racket, especially when I need some GUI.

I also use Emacs Lisp occasionally.

  1. What non-Lisp programming languages do you use?

I mostly use C at my day job. I also write some code in Dart and Go as well as bash scripts and makefiles. I sometimes also use Python. I also have professional experience with PHP, JavaScript, C++, C# and x86 assembly

  1. What is your favorite Lisp programming language? Why?

For a long time I was very happy with Guile, especially as I was using it with my (grand scheme) glossary - it really made the language terse.

But after using Kawa, I find the lack of checked type annotations (in macroexpanded positions) really annoying. Also, I like it that Kawa provides access to Java-like OO system (that I like way more than GOOPS that comes with Guile).

I think that porting the (grand scheme) glossary to Kawa would be nice, but that would probably require some changes in the compiler.

  1. What is your favorite non-Lisp programming language? Why?

I occasionally look at solutions to Advent of Code in various different languages, and beside my solutions in (grand scheme), I enjoy the ones in F# the most.

(They are usually quite similar in their spirit)

I also pretty much enjoy using Dart - I think that its designers are doing a great job.

  1. What is that one thing about your favorite non-Lisp language that you wish to see in your favorite Lisp language?

I really wished that Kawa offered Dart-like object system, which in practice would mean things like mix-ins and extension methods, and more decent generics.

18+ rml, (edited ) to Israel
@rml@functional.cafe avatar

I was just informed by one of the admins that I have 14 days to leave functional.cafe after I called a troll doing genocide apologia in my comments a zionist ape, where should I go? What servers don't bow to the complaints of #Zionism?

Functional.cafe are claiming I'm simply a multiple offender of their rules, which i will admit is true ever since they changed their rules, but I would like for it to be clear. They changed their rules in October specifically to accommodate Zionists complaining about my posts, the very day a #BDS tagged post of mine blew up and became among the most shared BDS posts on the activity pub network. I initially agreed to CW political posts, but as #Israel's #genocide in #Palestine has accelerated, killing all but one of my students in Gaza along with most of their families, I've concluded that hiding this behind content warnings is itself bowing to mild repression for the sake of satisfying the demands of the most extreme oppression: genocide.

I've seen plenty of pro-genocide posts in the local server feed. I dont think they are being asked to leave or even getting their posts censored, as mine increasingly have been (even removing posts with many likes from months ago, apparently on demand).

I'm sad I'll be losing all my past posts, especially those about #lisp and #scheme that I occasionally rediscover. Where can I go that won't turn similarly sour? My time with the #fediverse may be up tbh. After being blocked and soft-blocked by nearly everyone I was buddies with in the #guix community (for years!) for being an anti-genocide Jew, and now this, its quite clear that even spaces that act like they stand for universal liberties above all are actually willing supporters of the most oppressive regimes and ideologies on the planet. At least insofar as they are #European in origin and character.

PaniczGodek,
@PaniczGodek@functional.cafe avatar

@rml it will be huge a shame to see you leave

PaniczGodek,
@PaniczGodek@functional.cafe avatar

@zyd

you are right

this is how they work, and they are effective at that

and while I agree that this is not the most graceful way of dealing with this issue, I'm also not surprised that the moderators here want to stay away from that

the only problem is that "staying out of politics" is only an option when this "politics" does not concern you personally, or your friends, which I think isn't rml's case

I personally find it saddening that, instead of standing up for rml, the mods choose to wash their hands, but still I'm grateful for all the voluntary work they are doing to keep this instance running (and I'm not sure that I wouldn't want to do the same if I was in their shoes)

@mdallastella @g1smo @rml

PaniczGodek, to emacs
@PaniczGodek@functional.cafe avatar

While working on #GRASP, I occasionally try analyzing #Interlisp's #SEdit (because I'm curious about its internal representation), but I always end up not being able to understand literally anything from that code base.

And that makes me wonder: are the sources of GRASP so much easier to understand to me because I'm their author, or do the programming practices that I use (such as type definitions and plenty of examples) actually make things easier to read?

(A while ago, I did have a look at implementations of some things in #Emacs. The "undo" mechanism is understandable, but it owes this understandability to comments which make up for a missing type system. On the other hand, I've found Emacs' implementation of window splits much more difficult thant in GRASP -- in large part because GRASP is written in #Kawa #Scheme, and has a Java-like OO system, and I feel that classes and objects do a really good job at grouping related things together.)

rml, to Israel
@rml@functional.cafe avatar

"I am personally proud of the ruins of , and that every baby, even 80 years from now, will tell their grandchildren what the did"

PaniczGodek,
@PaniczGodek@functional.cafe avatar

@rml ouch

aziz, to scheme

Compiling #scheme a fine art

PaniczGodek,
@PaniczGodek@functional.cafe avatar

@rml what are the standard asterisk conventions? @aziz

PaniczGodek, to emacs
@PaniczGodek@functional.cafe avatar

Hey #emacs wizards out there!

Is there a simple way to make Emacs display the () parentheses [say, in prog modes] as 「」?

rml, to Israel
@rml@functional.cafe avatar

A Tel Aviv University Poll shows that only 1.8% of the population think the #IDF is using too much force in #Gaza. The problem isn't reducible to Netanyahu, it's the entire #Zionist political project.

#Israel #Palestine #Gaza #BDS

PaniczGodek,
@PaniczGodek@functional.cafe avatar

@rml I don't know, I think it depends on the kind of information they're being served from the media.

Anyway, I don't think that you can criticize Israel out of its existence - especially because people who grew up in there probably identify strongly with this country, and to them the only convincing narrative is that Hamas are the evildoers (which isn't untrue) who appeared out of nowhere (which is obviously false to anyone who dares to use their brain) to destroy their homeland (which, again, is quite true).

If anything, I think that maybe taking people such as Gabor Mate as role models, has a chance of affecting people's conscience.

rml, (edited ) to Jewish
@rml@functional.cafe avatar

Israel just bombed a tent city full of who fled North for on the 's orders.

Horrifying photos show families frantically rummaging through the carnage for the limbs of their family members. I won't reproduce them here, but they can be found on the bird site from @gazanotifications

They are murdering poor people trapped in a concentration camp, in the places they were told to flee for safety. They are killing impoverished, innocent, starving Palestinians, mostly under 30, with nowhere else to go.

This brutality is unparalleled in my lifetime. All studies show that Israel is in a class of its own, outdoing the Dresden bombings by a landslide. Saying this is not antisemitic: it is your duty, whoever you are.

I am : spiritually, scholarly, and Litvak Ashkenazi. It's not antisemitic for me, OR ANY NON-JEW to say. In fact, its every human's duty to call for this bloodshed to cease IMMEDIATELY, and to even call for this genocidal Zionist occupation to be dismantled before there is any more blood shed. Nothing keeps my heart beating like my Arab and Muslim comrades speaking out against this barabarism every day. All while facing the harshest consequences of anyone! This ugliness would quite literally drive me to kill myself if I didn't know so many people who are so brave.

I have been doing activism in Palestine since 2012, both boots-on-the-ground defense of protestors, and teaching programming. These are not antisemites; my Palestinian friends are as close to me as any others. And I have had 6 students murdered in Gaza in 120 days. All the others are starving, fleeing from tent city to tent city, trying to survive the most hellish circumstances of drone democide any people have ever witnessed in the history of humanity. Thats a simple fact now.

If you are a goy and claim to support this in our name, WE WILL REMEMBER. The vast majority of outside of Israel who are under 40 years old are anti-Zionists today. All the fastest growing Jewish organizations of the past decade are anti-Zionist. And we will not forget those who cheered on a 21st century while evoking the memory of our family members killed by Nazi . Especially not the , who have been by far the worst inciters and supporters of genocide outside of .

We need an immediate international , from, and on Israel to stop this brutality immediately!

PaniczGodek,
@PaniczGodek@functional.cafe avatar

@rml

"I don't say there are no Palestinians, but I say there is no such thing as a distinct Palestinian people. And most certainly, they are not the Chosen Nation, so they are not entitled to this land"

"The peace will come when Arabs stop hating those who grab their land, throw them out of their homes and kill their children"

  • Golda Meir, if she was only a bit more honest

Also, to paraphrase the meme,

"If Palestinians stop fighting, there will be no more war. Once Israel stops fighting, there will be no more Palestinians"

nil, to Lisp
@nil@functional.cafe avatar

deleted_by_author

  • Loading...
  • PaniczGodek,
    @PaniczGodek@functional.cafe avatar

    @nil i think it could be conveyed via a screencast

    PaniczGodek, (edited )
    @PaniczGodek@functional.cafe avatar

    @Flyberius @blawsybogsy
    A heater I saw today on the train on my way to work:

    amoroso, to retrocomputing
    @amoroso@fosstodon.org avatar

    Retro Programming is a delightful but sadly abandoned blog about programming retro systems, particularly the Spectrum and Z80 devices.

    However, the archive is full of great posts on Z80 Assembly, Forth, BASIC, and more. Lots of interesting technical details and project ideas.

    http://www.retroprogramming.com

    #retrocomputing #assembly #forth

    PaniczGodek,
    @PaniczGodek@functional.cafe avatar

    @amoroso The Digital Antiquarian is good & alive: https://www.filfre.net/

    PaniczGodek, to random
    @PaniczGodek@functional.cafe avatar

    Writing 'programs that write programs' isn't that big of a deal - you can easily do it in any language capable of concatenating strings.

    Now, writing programs that read programs - that's a different story (and that's where Lisp shines particularly bright)

    PaniczGodek, to random
    @PaniczGodek@functional.cafe avatar

    Can anyone recommend FLOSS screen/webcam recording software that works on Windows 11?

    If there is one Lisp function/macro/feature that you would like to see in a non-Lisp language, which one would it be?

    This is another Friday social topic. You are aimlessly wandering around a beautiful hilltop by a sea when an angel approaches you from the opposite direction. She is no ordinary angel. She is a Lisp angel! She will grant one Lisp wish to you. Before she can fulfill your wish, she needs this information from you:...

    PaniczGodek, to random
    @PaniczGodek@functional.cafe avatar

    This seems to be an interesting counterpoint to @jack 's "Stop writing dead programs"

    https://www.scattered-thoughts.net/writing/there-are-no-strings-on-me/

    ramin_hal9001, to Lisp
    @ramin_hal9001@emacs.ch avatar

    The Scheme language's small size isn't necessarily a strength

    So I was reading through part of the EmacsWiki and in the article on the Scheme programming language there are references to this ancient online debate from August of the year 2000 at the comp.lang.lisp Usenet group started by the late Erik Naggum, who was apparently a somewhat opinionated and inflammatory individual, who brought up the Scheme/Common Lisp debate on comment thread about someone being confused about how the CASE clause works.

    The Scheme language standard at the time was R5RS, Naggum's argument is a common refrain from Scheme fans such as myself, and he was arguing with Kent Pitman ( @kentpitman ) who was one of the sub-committee chairs of the Common Lisp X3J13 standardization process, and is the editor and maintainer of the Common Lisp HyperSpec, an online form of the Common Lisp specification. Kent Pittman's reply I thought was very well-reasoned, and worth re-posting here (quote):

    I just absolutely don't believe the Scheme standard is fairly cited as a model of a "better" standard. It is enormously vague on numerous matters of consequence. It omits really essential functionality that would be needed to write any seriously portable programs. It was stagnant for years on quibbles over some of the silliest syntax details. In my opinion, it's a toy language. There are real commercial Scheme implementations, but only by the sheer will of those implementers who've gone beyond the so-called standard and written in the things that the standard ought to have said in order to make the language finally useful. It achieves its "prettiness" and its "smallness" on the back of just plain leaving stuff out where it would appear to "clutter", and whatever you think of CL, I personally reject any claim that the Scheme is a model of improvement.

    (end quote)

    I wouldn't go so far as to call Scheme a "toy language" because the parts of the standard that are well-defined are solid and very useful. But yes, it seems the only useful implementations do solve these problems not addressed by the standard in completely different ways that makes it very difficult to write a Scheme program on one implementation that runs on another. Try to write one program that runs on MIT Scheme, Guile, Chez, Racket, Bigloo, Cyclone, Stklos, and Gambit. Try to even compute what set of SRFI (language extensions) are common to all of them. Most Scheme programmers have to pick just one implementation and stick to it without much hope of ever porting their programs to other implementations. It is possible to do it, easier than porting a program from Python to C++, but still not at all as easy as running the same Common Lisp program on SBCL, ECL, ABCL, or Franz.

    So I do agree with @kentpitman that there are some pretty important details left up to the implementers simply because none of them could agree on what to do and punted the issue rather than resolve it. Later (after the aforementioned Usenet debate) R6RS would try to solve these issues, but that standard was mostly rejected by the larger part of the Scheme community due to a lack of consensus. Much of that work lives on in the SRFIs, while Chez Scheme (R. Kent Dybvig) seems to be sticking to R6RS and is one of the most well-respected Scheme implementations, and a kind of flagship of that standard.

    I still have hope for R7RS-large though, which might end up being even larger than X3J13 when all is said and done. Unfortunately, recently John Cowan, chair of the R7RS-large standardization committee threw his hands up in resignation a few months ago after almost 10 years of trying to hammer-out consensus over details of the new R7RS-large standard. Daphne Preston Kendal ( @dpk ) has taken over and is fully capable of continuing the work.

    It might be interesting if some Schemers could get together and write a new fully R7RS-compliant Scheme-to-Scheme compiler in R7RS-small Scheme, with all of the COND-EXPAND expressions in place to run on all of the major R7RS-compatible Scheme implementations. This compiler would simply translate its input into code that the host Scheme compiler can compile, deferring low-level implementation details to the host. The compiler should be one massive file that you could just load into any Scheme compiler and it just works. Then this compiler maybe, just maybe could become The Scheme Standard. A good starting point would be the work of Marc Nieper-Wißkirchen who has written Rapid Scheme which compiles R7RS Scheme to another host Scheme, but it only supports Chibi and Larceny as the hosts.

    PaniczGodek,
    @PaniczGodek@functional.cafe avatar

    @rml @ramin_hal9001
    so would it be fair to say that scheme is a product of aristocracy?

    rml, to zig
    @rml@functional.cafe avatar

    out of the new "modern #C" or "C+" or whatever languages like #zig (right), #hare (left) seems to be the nicest, at the language level at least. clean block structure is hugely underrated and otherwise nice languages that take it for granted to ensure you can do

    node.* = .{ .data = value, .next = null };
    if (this.end) |end| end.next = node
    else this.start = node;
    this.end = node;

    ...completely ruins a block's clarity with too much syntax, which is part of what makes C code very confusing depsite being a minimal language (I also think there is something nice about the way that C does it, but its nice because you've seen it forever, not because they were great design decisions)

    meanwhile I don't need to read anything about hare or even squint to read the code and understand whats happening.

    pub fn Oucue(comptime Child: type) type { [ T const This = @This(); const Node = struct { data: Child, LSS [N } gpa: std.mem.Allocator, Bl el (LN end: ?*Node, pub fn init(gpa: std.mem.Allocator) This { return This{ gpa = gpa, BTN ELE VI iy b pub fn engueue(this: This, value: Child) !void { const node = try this.gpa.create(Node); node. = .{ .data = value, .next = null }; if (this.end) |end| end.next = node // else this.start = node; this.end = node; b pub fn dequeue(this: *This) ?Child { const start = this.start orelse return null; defer this.gpa.destroy(start); if (start.next) |next| this.start = next (AT this.start = null; this.end = null; b return start.data; b iy b test "queue” { var int_queue = Queue(i32).init(std.testing.allocator); try int_queue.enqueue(25); try int_queue.enqueue(50); try int_queue.enqueue(75); try int_queue.enqueue(160); try std.testing.expectEqual(int_queue.dequeue(), 25); trv std.testina.expectEaual(int aueue.deaueue(). 50):

    PaniczGodek,
    @PaniczGodek@functional.cafe avatar

    @rml @ekaitz_zarraga @drewdevault

    I've used Go recently at work, and to me it feels that it tries to be original in too many places (Capital letters for public members?), and that it's no fun writing in it (due to both cumbersome error handling and an expressiveness ceiling). I mean, some aspects are indeed impressive, like the ecosystem, or how fast the compiler works and how fast the code executes (especially if you're used to Python), but the lack of fun is a no go to me.

    Also, I feel that overall, Dart is a much better design as a language to "just pick up and start using", although I don't know how it compares benchmark-wise.

    PaniczGodek,
    @PaniczGodek@functional.cafe avatar

    @rml @ekaitz_zarraga @drewdevault

    Maybe to me the problem is that I'm really used to the style of development where I start by describing the things that I want in a semi-formal language, and then I elaborate the guts of the programming language so that my informal spec becomes a working program - something that Lisp is unparalleled at (but C is also quite OK, especially with GNU extensions).

    I feel that I can't use this approach with Go, and I have to "bend myself to the language" rather than the other way around - which is made difficult because, due to Golang's conventions, even the basic function composition doesn't work there, because, uhm, err :=

    PaniczGodek,
    @PaniczGodek@functional.cafe avatar

    @rml @ekaitz_zarraga @drewdevault the particular reason why I call C a more expressive language than Go is the preprocessor, which occasionally lets me bend the language in some fairly useful ways (espectally when combined with statement expressions and nested functions from GNU C)

    It does feel somewhat similar to C, except type signatures are written in the reverse order, and the compiler yells when a semicolon is present rather than absent

    What I love about Scheme is that if I don't like something about it, I can easily change it. In Go, there is this 'capital-identifiers are public' design decision, which seems highly accidental abd irrevokable (and it feels really dumb when working with JSON).

    Dart did something similar, but did it well: identifiers that begin with underscore are private, and I feel that it was a much better decision (because I think it was based on an existing and fairly widely used practice)

    Also, compared to C:

    • you can dereference nil and get a silent crash (rather than a core dump)
    • returning from main doesn't return exit code, and os.Exit must be called instead

    I kinda like the 'defer' statement though, but for, say, concurrency, I found the solutions from various Schemes (Guile, Racket and Kawa) nicer to work with.

    Overall, I think it would be super nice to have a Scheme with the qualities of Go.

    PaniczGodek,
    @PaniczGodek@functional.cafe avatar

    @ekaitz_zarraga @rml @drewdevault

    I wouldn't think so.

    I have very little hands-on experience with Clojure, but I think it's skewed strongly towards immutability and its idiosyncratic data notation.

    While Scheme canonically is presented in the context of functional programming, it isn't very opinionated about immutability.

    (The only thing that I find attractive about Clojure is Datomic, but I think that I'd eventually just want to write an interface to use it from Kawa)

    deech, to random
    @deech@mastodon.social avatar

    The tsunami of bs that we are going to experience from ai driven coding on mandatory mega corp controlled platforms is 100% our fault for not working on decent development environments when we had the chance.

    PaniczGodek,
    @PaniczGodek@functional.cafe avatar

    @deech programs must be written in a way such that machines can offer people maximum help in understanding them

    marick, to random
    @marick@mstdn.social avatar

    I’ve been wanting tests to serve as design documentation for just about 30 years, but I’ve never been happy with the result. And I confess, if I only have tests and code available, I almost always look to the code. Maybe because it’s more abstract? I can more easily reconstruct the “why” and “why this makes sense” from the code.
    https://floss.social/@opsitive/111324478952722458

    PaniczGodek,
    @PaniczGodek@functional.cafe avatar

    @marick I think that it is a problem with most languages that they force you to separate 'tests' from the code.

    I managed to infect my friend @drcz with the practice of interweaving definitions with examples, and just look at how nice it is to read this code:

    https://github.com/drcz/useless-software/blob/master/0--formulas-n-valuations.scm

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • thenastyranch
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • provamag3
  • magazineikmin
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • anitta
  • Leos
  • tester
  • JUstTest
  • All magazines