Re: [Chicken-users] how the second argument to ERROR is handled

2019-07-21 Thread megane

Peter Bex  writes:

> On Sun, Jul 21, 2019 at 09:03:33AM +0200, Marco Maggi wrote:
>> Ciao,
>>
>>   with CHICKEN 5.1.0, is the following correct:
>>
>>   (import (scheme) (chicken base) (chicken condition))
>>
>>   (call/cc
>>   (lambda (escape)
>> (with-exception-handler
>> (lambda (E)
>>   (escape (list (get-condition-property E 'exn 'location)
>> (get-condition-property E 'exn 'message)
>> (get-condition-property E 'exn 'arguments
>>   (lambda ()
>> (error 1 2 3)
>>   => '(#f 1 (2 3))
>>
>> or should the "message" property be #f?
>
> Hi Marco,
>
> This looks fine to me.  The first argument to "error" should always
> be the message.  You could argue that it should check for it to be
> a string, but I'm not sure that's required.
>
> The docs seem to suggest that the reason string is optional.  I think
> this is wrong.
>

The first argument is handled differently if it's a symbol:

(condition-case (error 'foo "bar" "baz")
  [exn () (pp (alist-update 'call-chain 'xxx (cdar (condition->list
  exn])

;; ((location foo) (call-chain . xxx) (arguments ("baz")) (message "bar"))

(condition-case (error "foo" "bar" "baz")
  [exn () (pp (alist-update 'call-chain 'xxx (cdar (condition->list
  exn])

;; ((location #f) (call-chain . xxx) (arguments ("bar" "baz")) (message "foo"))

___
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users


Re: [Chicken-users] how the second argument to ERROR is handled

2019-07-21 Thread Peter Bex
On Sun, Jul 21, 2019 at 09:03:33AM +0200, Marco Maggi wrote:
> Ciao,
> 
>   with CHICKEN 5.1.0, is the following correct:
> 
>   (import (scheme) (chicken base) (chicken condition))
> 
>   (call/cc
>   (lambda (escape)
> (with-exception-handler
> (lambda (E)
>   (escape (list (get-condition-property E 'exn 'location)
> (get-condition-property E 'exn 'message)
> (get-condition-property E 'exn 'arguments
>   (lambda ()
> (error 1 2 3)
>   => '(#f 1 (2 3))
> 
> or should the "message" property be #f?

Hi Marco,

This looks fine to me.  The first argument to "error" should always
be the message.  You could argue that it should check for it to be
a string, but I'm not sure that's required.

The docs seem to suggest that the reason string is optional.  I think
this is wrong.

Cheers,
Peter


signature.asc
Description: PGP signature
___
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users


[Chicken-users] how the second argument to ERROR is handled

2019-07-21 Thread Marco Maggi
Ciao,

  with CHICKEN 5.1.0, is the following correct:

  (import (scheme) (chicken base) (chicken condition))

  (call/cc
  (lambda (escape)
(with-exception-handler
(lambda (E)
  (escape (list (get-condition-property E 'exn 'location)
(get-condition-property E 'exn 'message)
(get-condition-property E 'exn 'arguments
  (lambda ()
(error 1 2 3)
  => '(#f 1 (2 3))

or should the "message" property be #f?

TIA
-- 
Marco Maggi

___
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users