ception, or (arctan +infinity) being inexact 90.0, this
wouldn't work as-is.
+ (< (sqrt (expt (- value estimate) 2)) margin))
That's simply (< (abs (- value estimate)) margin), no? Or does Guile not
have 'abs'?
Best regards,
Maxime Devos
On 16/02/2025 12:19, Maxime Devos wrote:
I'm going to look into what's the case for 'tan'. For 'tan',
tan(pi/4)=tan(45°) is rational as well - I'm going to look into
whether the 'S' of 'tan' is only the integer multiples pi/4, or
whether
On 16/02/2025 11:31, Maxime Devos wrote:
Some others you can add:
* tangent
* arcsine
* arccosine
* arctan
One more thing: arctan2. Can be implemented in terms of arctan, but
getting the sign right is inconvenient.
:
For which θ is θ/π and tan(θ) rational?
Assume t=tan(θ)∈ℚ. Note that sin (2θ)=(2t)/(1+t^2)∈ℚ. Since sin(2θ) is
rational and 2θ/π is rational, then 2θ is an integer multiple of π/2.
So, θ is an integer multiple of π/4.
(For the other direction, this can be verified with a lookup table.)
Best regards,
Maxime Devos
0 (with some error margin to deal with
inexactness). I'm pretty sure it's in radians.
(Usually I'd mention something about documentation here, but IIRC
Guile-Lib has some set-up where it copies docstrings.)
Best regards, Maxime Devos
That seems about right.
Now only needs to wait for someone able to actually merge this, I think.
Best regards,
Maxime Devos
econd fluid-ref invocation. and=> would avoid that.
Best regards,
Maxime Devos
’t think it can be shortened: it’s for Guile (so a SCM_ prefix for
namespacing), it’s for syscalls (so _SYSCALL suffix), and it’s a variant for
locking/unlocking (so LOCKED in the middle). Nothing to remove there, I’d think.
Best Regards,
Maxime Devos
t regards,
Maxime Devos
ing else that simply
takes a long while. During this time, the scm_i_misc_mutex is locked, so other
threads that want to use ttyname can’t progress for a long duration!
The variant of the SCM_SYSCALL loop I provided, avoids these issues.
Best regards,
Maxime Devos
e.
How is fixing ttyname outside the scope of fixing ttyname? Previously, you said
that:
>[context: ttyname]
>In any case, I'm happy to fix all the problems if we can be confident […]
Best regards,
Maxime Devos
are here about not exceeding the nominal maximum for its own
sake, rather it’s just to have a sufficiently large buffer.
Best regards,
Maxime Devos
.
(In case of unclarity and to be really sure to not copy too much, strncpy
exists where n=length of array excluding space reserved for terminating zero,
and things could be initialised to \0.)
Best regards,
Maxime Devos
).
(For a non-malloc example, see the bug report (+ patch) about GOOPS methods and
,trace.)
Best regards,
Maxime Devos
use scm_i_ttyname.
Also, the explanation in the commit message belongs in a (code) comment, so
people don’t have to track down the commit that introduced the changes.
Best regards,
Maxime Devos
mplementation exists for
bootstrapping the Scheme Scheme interpreter, so it’s of less interest to get
arity information in there.)
Best regards,
Maxime Devos.
xist, and hence
many of the procedures in that module still make sense, including
program-arities. In particular, arity information is still recorded (in
.guile.arities), so it should be made / kept accessible somewhere.
Best regards,
Maxime Devos
brary. See Venerable Port Interfaces, and See Writing Scheme Values, for
>documentation. Contrary to what R6RS prescribes, neither module automatically
>convers line feed characters to the line terminator of the end-of-line style.
(Please check the last point, seems like something that should be tested
experimentally and I don’t have a Guile setup on this computer.)
(Also, docstrings are to be modified accordingly)
Best regards,
Maxime Devos
> Thanks for your patches! Applied now.
Regardless of the question whether to generalise, there was also the thing
about the test testing for returning #true even though this behaviour isn’t
documented anywhere. Also, there was the thing about needing to verify whether
(ice-9 rdelim) always rec
t’s a similar
kind of nonsense I don’t want to deal with either (the generalisation Is
trivial so nothing needs to be shown, what you are claiming is different from
what you are doing, and I did no cheap talking), so consider yourself added to
the blocklist.
Bye,
Maxime Devos
Can you stop it with the repetitive claims of “this is just my proposal, I have
freedom to state it, you don’t need to persuade me, etc.”? I’ve heard you the
first, dunno, 5 or so times. Except for the “just” qualifier, I did not
disagree anywhere. For why you shouldn’t do those repetitive claim
.)
Rather, either the used newline in the test needs to be adjusted per-platform,
or the documentation of read-line needs to be adjusted to that \n is always a
newline.
Also, it’s also not a proper “back to the track” reply, since it ignores the
‘generalisation’ component of the track.
Regards,
Maxime Devos
needs time, and those other parts would remain unanswered.
Also, when I (of my own volition, and in absence of external obligations
competing for time) _choose_ to spend some extra time on writing beyond
necessity, then it’s up to myself whether to consider this extra effort ‘waste’
or not, or
s would be needed), as I
probably mentioned earlier in some other words.
Also, "anyone” includes me. You should stop wasting _my_ time by repeating your
ad nauseum messages -- whether it’s for just repeating your opinion, or
intended for (fallacious) argumentation or persuasion, it is quite ad nauseum.
Regards,
Maxime Devos
nstead of “\n” is
the line feed (I don’t know whether it recognised “\n”, IIRC it doesn’t).
Regards.
Maxime Devos
e assuming “\n” is a line delimiter. This is true under Unix
according to the documentation. But it doesn’t say anything about non-Unix
systems.
Best regards,
Maxime Devos
/commit/cc0e84cd56df3b07d378f710df39f8822317a2a2
• https://git.sr.ht/~old/guile-parallel/tree/master/item/parallel.scm#L29
• (what’s missing here, is a way to override Guile’s dynamic-wind in a
transparent manner)
Best regards,
Maxime Devos
’t heard a good argument
yet for _not_ generalising it.
(*) I.e., while it technically does parse something (extract line from text),
it doesn’t parse the line itself (which in many cases will need to happen), and
‘recognising a line as a line’ is kind of trivial.
Best regards,
Maxime Devos
passing ‘get-char’ you can act on each character, with ‘get-line’
I’m not sure what the difference would be, but apparently it’s not ‘read-line’
(?), if you give it a JSON reading+parsing proedure you iterate over all JSON
objects, with get-u8 you iterate over bytes etc..
Best regards,
Maxime Devos
user might want to set
CLOEXEC or other flags, or uncompress input, …)
Also, documentation is missing.
Best regards,
Maxime Devos
>Where is BREAK defined?
Break is defined by ‘while’:
https://www.gnu.org/software/guile/manual/html_node/while-do.html
doesn’t.
A variant with untyped keyword arguments:
(define-method (f (a ) (b ))
(pk 'positional))
(define-method (f (#:key foo))
(pk 'optional-keyword foo))
(f #:foo 'bar)
Who should win? Both are a quite specific match.
Best regards,
Maxime Devos
>Any opinions on what is best: Having a define-method* or having the
>functionality in define-method itself?
You can’t unify define-method with define-method* without making some arbitrary
choices in some special cases (the same applies to define-method* too actually,
and also to define-method
On Thu, 7 Nov 2024 17:10:45 +0100
Maxime Devos wrote:
> On Thu, 7 Nov 2024 12:23:08 +0100
> >Maxime Devos wrote:
> >> ‘atexit’ functions are run at ‘exit’. ‘exit’ can be run from signal
> >> handlers (*). Since the hook runs Scheme code, it could do a lot of
> >
On Thu, 7 Nov 2024 12:23:08 +0100
>Maxime Devos wrote:
>> ‘atexit’ functions are run at ‘exit’. ‘exit’ can be run from signal
>> handlers (*). Since the hook runs Scheme code, it could do a lot of
>> AC-unsafe things, resulting in problems.
>>
>> (*) glibc docum
even ‘malloc’, so likely I’m looking in
the wrong places.
Best regards,
Maxime Devos
#74210
I’ve send it to bug-guile, should appear in the issue tracker soon
h.)
Best regards,
Maxime Devos
omment on what the default _should_ be.)
Best regards,
Maxime Devos.
n variables bound by syntax-case. It does
>not currently capture local syntax transformers bound by let-syntax,
>letrec-syntax or non-top-level define-syntax forms. Any attempt to reference
>such captured syntactic keywords via local-eval or local-compile produces an
>error.
The ques
> If (srfi |1|) were to be standardised via SRFI process or RnRS (maybe
> implicitly as a ‘module names equality is to be done modulo
> number/symbol conversions’ thing in a future R8RS), then (srfi |1|)
> would be fine, but such a thing.
Looks like I didn’t finish the sentence: ‘but such a thi
s a practical concern.
(More precisely: lexical context of library name not necessarily the same as
context of a name part.)
This is irrelevant to Guile though, Guile doesn’t have this extension.
Regards,
Maxime Devos
t still work then?
(I can imagine that somewhere the SXML code assumes a unique ‘namespace
symbol/#f’ -> ‘namespace URL’ mapping.)
Best regards,
Maxime Devos.
n, it’s not
much of a stretch to potentially also include lexical information, so perhaps
numbers would work just fine too! (Implementation-dependent, but ‘multiple
module namespaces’ and ‘define-library as a macro’ are also
implementation-dependent.)
Best regards,
Maxime Devos.
the SRFI-0
>> convention of "srfi-N" names, which is basically also used by Guile.
>
>Aesthetics matter.
That’s one reason why I would prefer (srfi |1|) or (srfi srfi-1). That lone
number next to an identifier in (srfi 1) is unaesthetic to me.
Best regards,
Maxime Devos.
front and the code ‘foo-error1’ and
‘foo-error2’ for constructing the condition object (and raising it) doesn’t
need to be duplicated ...
Best regards,
Maxime Devos
oding the slash solves this easily.
See above for how percent-encoding is a problem of its own.
Best regards,
Maxime Devos
>R7RS talks about "programs" and "libraries". These are technical terms
with precise meanings.
>A "program" corresponds to your typical Scheme script. IIRC it _has_ to
start with (import ...).
I’ve found it in r7rs.pdf now:
> 7.1.6. Programs and definitions
> → + +
-N) (in define-module) would
be compatible, but that does not seem to be the future.
Best regards,
Maxime Devos
can simply be name (even when it also is other things). That alternate
universes are a hobby doesn’t prevent them from being illustrative.
Best regards,
Maxime Devos.
>Is (import (srfi :N)) portable in practice?
I don’t know. I know that (srfi srfi-N) isn’t portable, but I don’t know what
_is_ portable. I don’t know if ‘(import ...)’ is standard either (sure it is
as part of ‘define-library’, but I didn’t find it on its own in r7rs.pdf),
That said, at leas
tioned earlier, I also want to mention that (srfi srfi-N) is not
portable, it’s a Guile-ism.)
(*) and for small Schemes where the RnRS / SRFI stuff is implemented as a RnRS
library importing only standard RnRS modules.
Best regards,
Maxime Devos.
ocumentation what this _something_ is seems pretty reasonable to me
(not a non-sequitur).
Best regards,
Maxime Devos.
under the same module
name) (I don’t know if this is the case), keeping it under (sxml ...) would
make sense. (If not, (guile sxml ...)?)
Best regards,
Maxime Devos
ample.
> [...]
>
> and this is the reason i spoke up in this thread, not to argue for
> indiscriminate
> cleanups. retaining an ice-9 compatibility falls into the kludge category,
> i.e. it's ok if
> it's clearly marked as a kludge, and if it incurrs little extra maintenance
> costs.
Nowhere did I say anything about not properly deprecating ‘define-module’.
Best regards,
Maxime Devos
time. The ‘burden’
that would be referred to, is not some oil to applied or gears to regularly
replace, but rather a cleaning up past mistakes (once per mistake) that
probably could have been prevented in the first place.
Best regards,
Maxime Devos.
or do Latin-1).
Also, this structure makes no sense. Even if I did not provide an alternative
solution of my own, that wouldn’t mean Emacs’s thing is the answer. (Negative)
criticism can be valid without providing alternatives.
Best regards,
Maxime Devos.
bytevector->string (well, you need to turn the single
character into a string consisting of a single character first, but this is
trivial, simply do (string [insert-character-here])).
> returning the length of a string in characters, etc.? AFAIK, libiconv
> doesn't provide
these facilities.
This is a basic string API, just do string-length like in (all?) Schemes. In
Scheme, strings consists of characters, so string-length returns the length of
a string in characters.
Best regards,
Maxime Devos.
s that there now are two string-ish object types, but since
the two types represent different situations, one of them requires more care
than the other, and many operations are supported for both, I don’t think
that’s too bad.
(It might also be possible to replace directly by a
bytevector, but if you do this, then remember that on the C level you need to
deal with the lack of trailing \0.)
Best regards,
Maxime Devos.
ng precisely, as
long are there is a path from ‘language -> Tree-Il’.
Best regards,
Maxime Devos.
Sent from Mail for Windows
From: Dr. Arne Babenhauserheide
Sent: Sunday, 30 June 2024 16:34
To: Maxime Devos
Cc: Philip McGrath; mik...@djurfeldt.com; Thompson, David; Richard Sent;
guile-devel
Subject: Re: The Guile junk drawer and a C plea
>Maxime Devos writes:
>> No it doesn’t, b
>Maxime Devos writes:
>> ```
>> #!r6rs
>> (library (foo)
>>(export foo)
>>(import (rnrs base))
>>(define foo
>> (cons 'a 1)))
>> ```
> Here you are demonstrating how R6RS libraries have the _same_ problem. You
> shoul
applies to the ‘syntax’ route as well, unless you are doing
complicated (but possible!) DIY partial macro expansion shenanigans.)
Best regards,
Maxime Devos.
languages that also include a couple of imported modules(and which these are
depend on the precise fake language), though I don’t see why not just import
those as modules), but that doesn’t mean we should repeat Racket’s mistakes
with what else (and how) it also uses #lang for.
Best regards,
Maxime Devos
>Maxime Devos writes:
>>> I suggest that we design a new module hierarchy, introduce aliases for
>>> module bindings, and still supply the old module hierarchy during a few
>>> years for backward compatibility.
>> Also, on deprecation and removal: just because
Coq itself or a selection of Coq
libraries, but the point stands either way.
Also, in RnRS modules can have version modules. There isn’t currently support
for defining multiple versions of modules in Guile, but there could be.
Best regards,
Maxime Devos.
hings yet. For the
embedded language case, it would be useful to have such an automatic generator.
Best regards,
Maxime Devos.
>No; he wrote é, U+0065 LATIN SMALL LETTER E + U+0301 COMBINING ACUTE ACCENT,
>which is two characters unlike é, LATIN SMALL LETTER E WITH ACUTE.
>
>Likewise 👨🏭 is U+1F468 MAN + U+200D ZERO WIDTH JOINER + U+1F3ED FACTORY.
Right, I should have tested that instead of assuming it’s the pre-combined
>ISTR that "Unicode character" is actually synonymous the same than "Unicode
code point" -- but the common meaning of "character" is more fuzzy. Perhaps
it's wise to avoid that word when trying to be precise.
My second point was that it is to late for that, unless you intend to rename
procedures
ight be interpreted in terms of some 8-bit encoding.
Here’s a test: if you can input #\👨🏭 without errors and it evaluates to #\👨🏭,
then the encoding should be set up correctly.
Best regards,
Maxime Devos
dure you can insert some
meta-data for use by your run-time, in an initial vector alist. See
https://www.gnu.org/software/guile/manual/html_node/Procedure-Properties.html.
But that's limited and doesn't take macros, etc into account.
That’s the job of ‘eval’, not the user of ‘eval’.
Best regards,
Maxime Devos.
string
>Returns the number of characters in the given string.
, not “return the number of bytes”. Without mentioning the encoding, the
“number of bytes” would be ill-defined anyways.
Best regards,
Maxime Devos.
ory-name-here/autopoint”
and add “insert-directory-name-here” to path, so no replacing .m4 happens.
Best regards,
Maxime Devos
> > > if you want this^ to be actually defined while compilation is
> > > happening (i.e. in the compilation stage; see staged computing), then
> > > you need to use an (eval-when (expand) ...) wrapper around it.
>
>
> > Thank you for the reply! Not sure what you mean. The following code
> > defi
no lambdas are returned.
Best regards,
Maxime Devos.
e reason, the abort-to-prompt will succeed but any attempt to resume the
>continuation (by calling it) would fail. This is because composing a saved
>continuation with the current continuation involves relocating the stack
>frames that were saved from the old stack onto a (possibly) new position on
>the new stack, and Guile can only do this for stack frames that it created for
>Scheme code, not stack frames created by the C compiler. It’s a bit gnarly but
>if you stick with Scheme, you won’t have any problem.
>
>If no prompt is found with the given tag, this procedure just returns #f.
Best regards,
Maxime Devos.
exception handler.
I don’t know what you are investigating precisely, but maybe it is
>https://sources.debian.org/src/guix/1.4.0-6/gnu/build/shepherd.scm/?hl=112#L109
If it is this, surely (@ (fibers) sleep) could be adjusted to _not_ suspend
(and instead just, well, sleep) when there is no Fibers task scheduler (similar
stuff exists for the (Fibers) channels and conditions implementation).
Best regards,
Maxime Devos.
is a rather recent commit).
It would be helpful to include in test.scm what the expected output would be
and what unexpected output is encountered.
Best regards,
Maxime Devos.
onsider the situation where the handler invokes the delimited continuation
twice.
(call-with-prompt
[tag + handler things]
(lambda () (get-bytevector-all [...]))
[tag + handler things])
Thread #2:
(system-async-mark
(lambda ()
(abort-to-prompt [tag + more arguments]))
[Thread #1]))
Best regards,
Maxime Devos.
“L” to “GPL” appeared to lead to
significant improvement that surpasses the cost of having more proprietary
software. It’s not something I have carefully investigated, so take it with a
full salt shaker.
Best regards,
Maxime Devos
>where is the doc of Wisp? i did not yet install it, as i understand it will be
>included in next release of Guile?
Going by the the commit message, it now is in:
> * doc/ref/srfi-modules.texi (srfi-119): add node
Adding to my previous response:
Most (all?) tests for suspendable/non-suspendable are shared, and run in both
cases, so probably the suspendable get-bytevector-all already has tests.
I sense a lack of tests for the test suite ...
Also, to avoid avoidable allocations and copying, it would be nice if
%initial-length could be overridden (optional #:initial-length keyword
argument), in case the user has a better guess available.
Best regards,
Maxime Devos
eption
handler stack (IIRC, Guile uses the more general fluid stuff instead because of
this), but otherwise, I don’t think so. I think the problem is just a bug (and
some of the with-throw-handler stuff that’s making thinking about what’s
correct/implementing stuff correctly harder).
Best regards,
Maxime Devos
[Adding Andy Wingo because of the stack shenanigans]
>Subject: exception from inside false-if-exception?
Duplicate of #46009 - (backtrace) crash, string->number: Wrong type argument in
position 1 (expecting string): #f - GNU bug report logs
>the expression pointed to by debug.scm,72:40 is this:
ule2.go”, ... be a symlink to
“module0.go”
Some care required for targets not supporting symlinks, but making fake
symlinks as regular files recognised by module loading code (or on lower level,
whatever) should be straightforward.
Best regards,
Maxime Devos.
callers may need to do extra validation.
Also, the commit message needs to be changed to changelog format.
Also worth checking if the Texinfo documentation mentions parse-http-method,
and if so, adjust it.
Best regards,
Maxime Devos.
annah and
without any kind of administration – I just send patches to guile-devel@gnu.org
with a cover message. (Or without cover message if it’s just a single patch.)
Best regards,
Maxime Devos.
). I’ve only used it for demo purposes so
far, though.
Best regards,
Maxime Devos.
amiliar enough with the Guile implementation to tell if the extra
logic is best done in this function or in its caller. It just needs to be done
_somewhere_.
Best regards,
Maxime Devos
Not Allowed) status code.
Given the proposal to (in this procedure) allow all methods (at least all
grammatical methods) in a new implementation, it seems this won’t be this
method’s responsibility anymore, though.
Best regards,
Maxime Devos
e “conform to grammar” part, not the “buffer size part”)
(With regards to the first point) this paragraph SHOULD be ignored, this way
leads to continued violations of the grammar and potential security problems
(see example in previous point). Postel’s law is a mistake.
Best regards,
Maxime Devos
Op 05-12-2023 om 00:12 schreef Tomas Volf:
Thank you for the review.
On 2023-12-04 22:06:42 +0100, Maxime Devos wrote:
Op 29-11-2023 om 17:40 schreef Tomas Volf:
+guix shell -D -f guix.scm --pure -- ./configure --enable-mini-gmp
Also -fexcess-precision=standard (see #49368 / #49659
.
You might want to check if static libraries are built by default (*),
and if so, add --disable-static to reduce compilation time.
(*) can be tested with "find . -name '*.a'" after "make" -- don't worry
about libgnu.a, IIUC only libguile-3.0.a / .so is impo
+@c This SRFI 64 documentation was "snarfed" from upstream specification
+@c HTML document using the 'snarfi' script.
That HTML document comes with a license that requires:
> The above copyright notice and this permission notice shall be
> included in all copies or substantial portions of the
Op 22-11-2023 om 00:02 schreef Timothy Sample:
Hello,
[Dropping Karl since we are no longer discussing Automake maintenance.]
Maxime Devos writes:
[What about] discoverability, ease of updating the test driver,
clarity, unbundling and the goals of Freja Nordsiek?
Maybe Guile should
in the texi.
Haven't looked at the actual documentation.
Best regards,
Maxime Devos.
OpenPGP_0x49E3EE22191725EE.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature
Op 21-11-2023 om 18:33 schreef Maxime Devos:
I think that doing nothing other than closing that patch would be a
reasonable course of action. :)
And how is "doing nothing" supposed to help with discoverability, ease
of updating the test driver, clarity, unbundling and the goal
Op 20-11-2023 om 17:16 schreef Timothy Sample:
Hi,
Maxime Devos writes:
Op 19-11-2023 om 18:17 schreef Karl Berry:
Hello Guile folk - back in May 2016, Mathieu Lirzin submitted a patch
to add a test driver for Guile Scheme to Automake.
https://lists.gnu.org/archive/html/automake-patches
1 - 100 of 338 matches
Mail list logo