IRC channel logs

2022-12-21.log

back to list of logs

<flatwhatson>lloda: if it's a fairly standard gnu+macos setup then fixing compilation there seems worth it imo
<flatwhatson>i'll recruit a volunteer to see if that build failure is reproducible
<flatwhatson>lloda: confirmed report of that "tls model" error with homebrew gcc-12 on an m1
<lloda>flatwhatson: ty for that, will fix
<lloda>btw are you able to review aleix' m1 patch on guile-devel?
<gnucode>flatwhatson: do you want a website for guile-steel ?
<flatwhatson>gnucode: hah, thanks for the offer, i think it's maybe too soon for anything like that, guile-steel is probably best classified as "vapourware" right now :)
<flatwhatson>or, "guile-steel is a vibe" :P
<flatwhatson>it might be nice to have a wiki to collect research & notes on ideas related to static scheme, currently the #guile-steel logs are all there is
<flatwhatson>lloda: the apple silicon patch lgtm, builds & passes tests on my amd64 guix, builds & fails 2 tests on m1 macos
<flatwhatson>FAIL: 00-socket.test: setsockopt AF_INET: IPPROTO_TCP TCP_NODELAY
<flatwhatson>ERROR: 00-socket.test: AF_UNIX/SOCK_STREAM: bind abstract - arguments: ((system-error "bind" "~A" ("No such file or directory") (2)))
<flatwhatson>FAIL: filesys.test: readlink: port representing a regular file - arguments: (expected-value 22 actual-value 20)
<flatwhatson>but those might not be blockers for merging that patch, just unresolved macos compat issues.
<gnucode>flatwhatson: how would you define a static scheme?
<gnucode>is that the same thing as typed racket?
<flatwhatson>gnucode: typed racket is gradual typing, so adding type constraints on top of existing scheme code, but still sitting on a big runtime framework & interpreter
<gnucode>so you are saying that static scheme would be lower-level than typed racket. ok
<flatwhatson>static scheme as it's done in pre-scheme is about taking a restricted subset of scheme that can be compiled directly to machine code
<fosskers>What features don't make the cut?
<gnucode>ok. What sort of help could you use for guile-steel?
<gnucode>fosskers: I think lists are cut from prescheme... car and cdr and cons....I think.
<fosskers>So... "lisp" xD
<flatwhatson>yeah the big things are no garbage collector, no lists, restricted lambda captures
<flatwhatson>those are missing from pre-scheme but could be added as library code
<flatwhatson>gnucode: right now i'm working on a talk "Introduction to Pre-Scheme" for FOSDEM '23 which should help to get interested people onto the same page
<flatwhatson>one aim of the talk is to make it easier for people to use pre-scheme as-is from scheme48
<flatwhatson>it would be cool if people would start playing with it & exploring its current limitations there
<flatwhatson>meanwhile after the talk i'll focus on hacking a portable stand-alone compiler out of its scheme48 host
<lloda>flatwhatson: ty for the check
<lloda>i also pushed the tls-model patch, although the extra warning is bad. Looks like a compiler issue for sure
<lloda>or compiler/platform i should say, bc 12 worked fine on linux
<meo>i was bored and i wrote a solution for todays aoc in guile, https://pastebin.com/JpLyLsGe, if anyone cares to comment on what's silly/could be improved
<chrislck>sneek: botsnack
<sneek>:)
<old>meo: I haven't check the aoc for a few days now. But quickly, you should use `else` in your `cond` clause instead of `#t`.
<old>You could even transform the `cond` into `(case ((2) ...) ((4) ...) (else ...))`
<chrislck>meo: nice -- i've cleaned up a bit your elegant solution https://pastebin.com/raw/UPeS26VV
<graywolf>Hi :) How can I load module name based on a define? Basically I'm trying to do something like (define x 'foo) (use-modules (facts x)) , which I would like to load module (facts foo).
<chrislck>(module-use! (current-module) (resolve-interface `(facts ,x)))
<graywolf>Thanks, will give it a try :)
<old>chrislck: Should it not be `(module-use! (current-module) (module-public-interface (resolve-module `(facts ,x))))` ?
<chrislck>beats me.
<chrislck>best experiment...
<old>Well I'm not sure. Your solution works also
<old>well it does import all private bindings
<old>graywolf: You're best to use the module-public-interface if you only want public bindings
<graywolf>old: Thanks, will do
<chrislck>TIL.
<daviid>old: resolve-interface, quoting the manual, '... The interface of a module is also a module object, but it contains only the exported bindings.', fwiw
<daviid>so chrislck solution is also perfectly working
<meo>ooh exciting
<meo>thanks
<meo>ah damn I didnt even know match was a thing
<meo>that is legitimately a transpiler
<meo>ACTION rubs eyes
<meo>thanks for the bulb moment