Hello you lovely guile people! This bug is so simple the subject line says it all! file-exists? is a predicate, but #+BEGIN_SRC scheme (file-exists? #f) ice-9/boot-9.scm:1685:16: In procedure raise-exception: In procedure stat: Wrong type argument in position 1 (expecting open file port): #f Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. #+END_SRC I will shortly tag this as "easy". Can you lovely maintainers give me about a week to try to fix this myself? Thanks, Joshua avid fantany reader
> Le 12 nov. 2022 à 18:50, Joshua Branson via Bug reports for GUILE, GNU's Ubiquitous Extension Language <bug-guile@gnu.org> a écrit :
>
>
> Hello you lovely guile people!
>
> This bug is so simple the subject line says it all!
>
> file-exists? is a predicate, but
>
> #+BEGIN_SRC scheme
> (file-exists? #f)
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> In procedure stat: Wrong type argument in position 1 (expecting open file port): #f
>
> Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
> #+END_SRC
>
> I will shortly tag this as "easy". Can you lovely maintainers give me
> about a week to try to fix this myself?
>
> Thanks,
>
> Joshua
> avid fantany reader
What’s the problem here?
It is normal for predicates to be defined only on certain types. You will find the same with positive?, string-null? and the like.
Regards,
Jean
November 12, 2022 12:58 PM, "Jean Abou Samra" <jean@abou-samra.fr> wrote: >> Le 12 nov. 2022 à 18:50, Joshua Branson via Bug reports for GUILE, GNU's Ubiquitous Extension >> Language <bug-guile@gnu.org> a écrit : >> >> Hello you lovely guile people! >> >> This bug is so simple the subject line says it all! >> >> file-exists? is a predicate, but >> >> #+BEGIN_SRC scheme >> (file-exists? #f) >> ice-9/boot-9.scm:1685:16: In procedure raise-exception: >> In procedure stat: Wrong type argument in position 1 (expecting open file port): #f >> >> Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. >> #+END_SRC >> >> I will shortly tag this as "easy". Can you lovely maintainers give me >> about a week to try to fix this myself? >> >> Thanks, >> >> Joshua >> avid fantany reader > > What’s the problem here? > > It is normal for predicates to be defined only on certain types. You will find the same with > positive?, string-null? and the like. Perhaps I am just being really pedantic. I asked in the #guile irc chat if a predicate should be able to raise an exception. The answer I was given was no. Admittedly I did not stay in the channel for long, and I quickly filed this bug report. Naively, it just feel like it (file-exists? #f) should return #f. Would there be an objection to changing the definition of file-exists to (define (file-exists file) (and (string? file) (old-file-exists-code file))) Thanks, Joshua > > Regards, > Jean
[-- Attachment #1: Type: text/plain, Size: 1280 bytes --] On Sun, Nov 13, 2022 at 02:15:43AM +0000, jbranso--- via Bug reports for GUILE, GNU's Ubiquitous Extension Language wrote: > November 12, 2022 12:58 PM, "Jean Abou Samra" <jean@abou-samra.fr> wrote: > > >> Le 12 nov. 2022 à 18:50, Joshua Branson via Bug reports for GUILE, GNU's Ubiquitous Extension > >> Language <bug-guile@gnu.org> a écrit : > >> > >> Hello you lovely guile people! > >> > >> This bug is so simple the subject line says it all! [file-exists? raises exception on #f] [...] > > It is normal for predicates to be defined only on certain types. You will find the same with > > positive?, string-null? and the like. > > Perhaps I am just being really pedantic. I asked in the #guile irc chat if a predicate should > be able to raise an exception. The answer I was given was no. You both have a point. Checking for existing predicates with a longer tradition, though: scheme@(guile-user)> (exact? "mumble") ice-9/boot-9.scm:1685:16: In procedure raise-exception: In procedure exact?: Wrong type argument in position 1: "mumble" seems to support Jean Abu's position that it is more customary to raise for an argument of the wrong type. Also `string<?', etc. do this. That seems to be the consensus. Cheers -- t [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #1.1: Type: text/plain, Size: 1099 bytes --] Le 13/11/2022 à 07:44, tomas@tuxteam.de a écrit : > You both have a point. Checking for existing predicates with a > longer tradition, though: > > scheme@(guile-user)> (exact? "mumble") > ice-9/boot-9.scm:1685:16: In procedure raise-exception: > In procedure exact?: Wrong type argument in position 1: "mumble" > > seems to support Jean Abu's position that it is more customary to > raise for an argument of the wrong type. Also `string<?', etc. > do this. That seems to be the consensus. Yes. I am not sure where the people in the Guile IRC got the idea that a predicate shouldn't raise an exception. Lots of predicates in Guile do, and that is very helpful because it catches mistakes. > Naively, it just feel like it (file-exists? #f) should return #f. Why? > Would there be an objection to changing the definition of file-exists to > > (define (file-exists file) > (and (string? file) > (old-file-exists-code file))) It would be inconsistent with the rest of Guile and I don't see what it would help with. Best, Jean [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 236 bytes --]
Jean Abou Samra <jean@abou-samra.fr> writes: > Le 13/11/2022 à 07:44, tomas@tuxteam.de a écrit : >> You both have a point. Checking for existing predicates with a >> longer tradition, though: >> >> scheme@(guile-user)> (exact? "mumble") >> ice-9/boot-9.scm:1685:16: In procedure raise-exception: >> In procedure exact?: Wrong type argument in position 1: "mumble" >> >> seems to support Jean Abu's position that it is more customary to >> raise for an argument of the wrong type. Also `string<?', etc. >> do this. That seems to be the consensus. > > > Yes. I am not sure where the people in the Guile IRC got the idea > that a predicate shouldn't raise an exception. Lots of predicates in > Guile do, and that is very helpful because it catches mistakes. > > >> Naively, it just feel like it (file-exists? #f) should return #f. > > > Why? > hmmm, somehow I missed your response. I guess for my simple use case, it just made more sense. I am defining a service for guix that asks for user input. If the user doesn't type in input, the default value was #f. That's fine. Thanks for all's replies. I'll go ahead and close this bug! Thanks! > > >> Would there be an objection to changing the definition of file-exists to >> >> (define (file-exists file) >> (and (string? file) >> (old-file-exists-code file))) > > > > It would be inconsistent with the rest of Guile and I don't > see what it would help with. > > Best, > Jean