ruhr.social ist einer von vielen unabhängigen Mastodon-Servern, mit dem du dich im Fediverse beteiligen kannst.
Eine Mastodon-Gemeinschaft rund um das Ruhrgebiet und die Menschen dort. Diese Instanz wird ehrenamtlich von Enthusiasten moderiert und technisch betreut.

Verwaltet von:

Serverstatistik:

1,5 Tsd.
aktive Profile

#PreScheme

0 Beiträge0 Beteiligte0 Beiträge heute

I merged the rework branch of #letloop

That rework has two parts:

- prefix all scheme command with scheme, so now to spawn a REPL you can do you: letloop scheme repl. This is done like that because there is another namespace in the cli, namely letloop root for container interaction, also because I *dream* of implementing vau on top of Chez but to do that in a way that is helpful, and easy, I will need to do it in another language hence another cli namespace. Got it?

- To avoid community fragmentation, and ease maintenance, I dropped the `(srfi)`, and `(scheme)` namespaces. That does not mean, no SRFI will land in letloop, it means they will not be under `(srfi)`, or `(scheme)` namespaces. Keeping up with changes in chez-srfi, and R7RS is difficult, it is better to rely on chez-srfi repository, or akkuscm.org to use those. Happy?

Another dream I have is build my own okvs #database. I tried bigloo but it is slow 💔. Even Chez Scheme is too slow for that kind of work. That still looks foolish from on job market perspective to do that kind of low level work in Scheme. So that means I need to learn #rust or better... wait for #prescheme.

In the meantime I will focus on the sub-command `letloop scheme serve` [0] to ease the deployment of scheme #web applications. Yes it is petit-cloud [1], instead foundationdb I will use #lmdb, and the name is not final, I will prolly come back to petit-cloud 🌤️ By the way, if you know about a bootstrap-like css framework I am willing to consider your suggestions.

If you want to try letloop, I mean I know you want to try letloop! Checkout github.com/letloop/letloop/rel download the binary for your favorite linux or gnu/linux distro. Mind the fact that I dropped support for program.scm so you need to move all your logic inside a `library.scm` with say a `main` procedure, and execute it will: letloop exec /path/to/libraries /path/to/library.scm main -- command line arguments.

I will be very happy to get feedbacks, and patches 😁

[0] diff view at github.com/letloop/letloop/pul

[1] amirouche.dev/2023/04/petit-cl

Happy hacking!!1

It's time for an update on the Pre-Scheme Restoration project!

TL;DR: The compiler is approximately 75% ported to Chibi, Sagittarius and Guile, with Unsyntax expander integration underway. We've also got a new R7RS compatibility layer for Scheme 48, and a bunch of tooling written with Scsh.

Thanks to @nlnet for supporting this project under the NGI Zero Core program.

See my update post for more details: prescheme.org/posts/first-repo

prescheme.orgFirst report on the Pre-Scheme Restoration — Pre-Scheme
Antwortete im Thread

@aartaka thanks for working on SRFI 253, and thanks for your interest in #prescheme!

The original/legacy implementation of Pre-Scheme provides no support for runtime type checks. This is because there is no type information available at runtime; all types are inferred & resolved at compile-time, and the type information is discarded when lowering to machine code. This reflects the functionality of C, which has no analogue for Scheme's `integer?`.

It does have explicit types in two places: the definition of record types (where each field must have a type), and the declaration of external identifiers. The notation for types uses `(=> (integer integer) integer)` to represent a binary operation on integers, and `(^ integer)` to represent a pointer-to-integer. This resembles Chicken's notation (wiki.call-cc.org/man/5/Types) if `=>` was an alias for `procedure`, though Chicken doesn't appear to support typed pointers.

Given this starting point, something like Chicken's `:` and `the` (which is also a Common Lisp-ism) would be the easiest way to extend Pre-Scheme with support for type annotations. As for Bigloo's `::` type suffixes, they're not compatible with Scheme's rules for identifier naming, and therefore not compatible with Pre-Scheme's goal of being a Scheme "subset".

I think the "holy grail" for a future version of Pre-Scheme would be to support Scheme's type predicates as compile-time checks. This would be the most natural system for Scheme programmers, and could form the basis of a lightweight type checking syntax compatible with SRFI 145 and SRFI 253. In addition to type checking, predicates would introduce a general mechanism for ad-hoc polymorphism to Pre-Scheme, which would be very useful, but has implications for type inference which need to be explored.

In the coming months I'll be working on some initial (simpler!) extensions for Pre-Scheme's type system to support sized numeric types, polymorphic arithmetic, and unions/sum types. These all touch on the same topic from slightly different directions, and I'll be in a better position to plan further extensions once they're done.

@daviwil

wiki.call-cc.orgTypes - The CHICKEN Scheme wiki
Antwortete im Thread

@daviwil Sorry I couldn't catch this live, but I enjoyed watching the VOD!

Going "first principles" from the manual to a working program popping up a Raylib window is impressive, a valiant effort despite the arcane tooling!

You might be interested in looking at the codeberg.org/prescheme/presche repository, it has some basic examples tied together with a Guix manifest and a simple Makefile which makes for a slightly more comfortable workflow.

For the Scheme 48 REPL, you can leave error levels with `,reset`, equivalent to Guile's `,q` or `,quit`. I also find it useful to run scheme48 inside rlwrap to get some completion and history:

codeberg.org/prescheme/s48-r7r

Really appreciate the stream and getting some more hands and eyeballs on #prescheme :blobcatscience:

Codeberg.orgprescheme-demoA collection of small examples of Pre-Scheme code

Maybe the denizens of Guix and Guile worlds are interested in this

«Announcing the Pre-Scheme Restoration project! Many thanks to @nlnet who have made this project possible.»

«The primary objective of the Pre-Scheme Restoration project is to make Pre-Scheme available as a practical alternative to C for the wider Scheme community.»

@flatwhatson

prescheme.org/posts/announcing

#gnu#guix#guile

I'm just now catching Andrew Whatson's talk on #PreScheme from #fosdem this year, and I just can't get over the fact that he was able to implement a working, reasonably fast systems programming language with Hindley-Milner type inference in his free time over the course of a few months. And I was in the #GuileSteel irc when the discourse first started, it was probably less than a month before he got it working. I even try it then and it seemed great for something that went up that quick. What other programming languages make rapid prototyping #compilers feasible without relying on massive frameworks like #LLVM or #Truffle/#Graal?

And even then...

fosdem.org/2023/schedule/event

fosdem.orgFOSDEM 2023 - Introduction to Pre-Scheme

@fosdem Hi. Thank you for all your great work on this year's #FOSDEM.

People are having problems accessing the video recording of Andrew Whatson's "Introduction to Pre-Scheme" talk:

fosdem.org/2023/schedule/event

There seems to be a problem with the video files: neither the .webm nor the .mp4 versions load.

It would be great if you could look into it - I can see there's a lot of interest in this talk by people who couldn't attend or follow it live. See comments on my reddit post here:

reddit.com/r/scheme/comments/1

Thanks!

#Scheme #PreScheme #Guile 📼

fosdem.orgFOSDEM 2023 - Introduction to Pre-Scheme