I will note that paying attention to those warnings is super heolpful in
programming in guile. I miss these warnings
alot when doing python programming.In a sense with these warnings you get
close to static typechecking programming
languages and scheme/guile is really a nice mix of dynamic and static typing

On Thu, Jan 21, 2021 at 2:58 PM Ricardo Wurmus <rek...@elephly.net> wrote:

>
> Hi,
>
> > Consider this bit of simple code:
> >
> > #+BEGIN_SRC scheme
> >
> > (define (thunk)
> >    (lambda (x)
> >      x))
> >
> > (thunk) ;; works ok, I guess.
> > (thunk "hello world!\n")  ;; runtime error
> >
> > ;;; <stdin>:1074:0: warning: possibly wrong number of arguments to
> `thunk'
> > ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> > Wrong number of arguments to #<procedure thunk ()>
> >
> > Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
> > #+END_SRC
> >
> > Guile will compile this program seemingly with no error.  Guile will
> > correctly report at runtime that procedure '(thunk "hello world!\n")'
> > takes no arguments, but it's lambda accepts 1 argument.  Would it be
> > possible to report this error at compile time?  Would that be
> > advantageous?
>
> This is not a bug.  What you call “thunk” here is a procedure that
> returns a procedure.  That’s very common and is often done to delay
> evaluation.
>
> It is in fact an error to call the procedure “thunk” with an argument.
> It doesn’t matter that it happens to return a procedure that *can* take
> an argument.  The procedure it returns is just like any other value,
> though, and isn’t inspected any further.
>
> That said, it is not true that Guile will compile this without a
> complaint.  I dumped your code snippet in a file foo.scm and
> compiled it:
>
> --8<---------------cut here---------------start------------->8---
> guild compile foo.scm
> foo.scm:6:0: warning: wrong number of arguments to `thunk'
> wrote
> `/home/rekado/.cache/guile/ccache/3.0-LE-8-4.4/home/rekado/dev/gx/gwl/foo.scm.go'
> --8<---------------cut here---------------end--------------->8---
>
> Isn’t that exactly what you’re asking for?
>
> --
> Ricardo
>
>
>
>
  • bug#46014: (def... Bug reports for GUILE, GNU's Ubiquitous Extension Language
    • bug#46014:... Ricardo Wurmus
      • bug#46... Stefan Israelsson Tampe
        • bu... Bug reports for GUILE, GNU's Ubiquitous Extension Language
      • bug#46... Bug reports for GUILE, GNU's Ubiquitous Extension Language
        • bu... Ricardo Wurmus
          • ... Bug reports for GUILE, GNU's Ubiquitous Extension Language
            • ... tomas
            • ... Ricardo Wurmus
              • ... Bug reports for GUILE, GNU's Ubiquitous Extension Language
                • ... Ricardo Wurmus
    • bug#46014:... Bug reports for GUILE, GNU's Ubiquitous Extension Language

Reply via email to