guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Feature request: pretty print error message


From: Dmitry Bogatov
Subject: Feature request: pretty print error message
Date: Sun, 12 Oct 2014 01:09:32 +0400
User-agent: Mutt/1.5.22.1 (2013-10-16)

Subj.

I believe Guile have two problems:

-- error messages rarely mention, where real problem is
-- they are also completely unreadable.

Maybe situation with second can be improved, using (ice-9 pretty-print)?

If I can plug it in, please tell me how, if I can't,
maybe someone could make it possible?

Offtopic: Is it any way to write macros to hell not break loose, if
 I use it wrong?

Just encountered, just to illustrate my vision of problem.

ice-9/psyntax.scm:2549:53: In procedure #<procedure 25646c0 (val key m)>:
ice-9/psyntax.scm:2549:53: Syntax error:
/home/kaction/devel/guile-bash/lisp/system/ffi.scm:297:2: syntax-case: invalid 
clause in form ((_ name (arg-clause ... -> ret)) (check-name (syntax name)) 
(with-syntax ((encoder (fmap pointer/encoder-name (syntax name))) (decoder 
(fmap pointer/decoder-name (syntax name))) (clauses (syntax (arg-clause ...))) 
((a/name ...) (s-map clause/name clauses)) ((a/type ...) (s-map clause/type 
clauses)) ((d/name ...) (s-map clause/name (s-filter (lambda (x) (or 
(clause/const? x) (clause/normal? x))) clauses))) ((d/arg ...) (s-map 
clause/d/arg clauses)) (((prov/name . prov/type) ...) (s-map (lambda (x) 
(s-cons (clause/name x) (clause/type x))) (s-filter clause/provide? 
clauses))))) (syntax (begin (define encoder #f) (define decoder #f) (match ret 
(($ ret-decoder ret-encoder ret-type ret-size) (set! encoder (lambda (fn) 
(procedure->pointer ret-type (lambda (a/name ...) (ret-encoder (fn 
((ffi-object-decoder a/type) a/name) ...))) (list a/type ...)))) (set! decoder 
(lambda (ptr) (define raw-proc (pointer->procedure ret-type ptr (list a/type 
...))) (lambda (d/name ...) (with-provided-memory ((prov/type prov/name) ...) 
(define <ret> (ret-decoder (raw-proc d/arg ...))) (let ((provided ((list 
prov/name ...)))) (if (null? provided) <ret> (cons <ret> provided))))))))) 
(define-ffi-object name #:encoder encoder #:decoder decoder #:size (sizeof 
(quote *))))))

--
Best regards, Dmitry Bogatov <address@hidden>,
Free Software supporter, esperantisto and netiquette guardian.
GPG: 54B7F00D

Attachment: pgpWz9skMXytD.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]