From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Israelsson Tampe Newsgroups: gmane.lisp.guile.bugs Subject: bug#12883: [2.0.6] CSE bug Date: Wed, 14 Nov 2012 22:48:29 +0100 Message-ID: References: <871ufwfbny.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=047d7bea3476b85ca004ce7b7e3b X-Trace: ger.gmane.org 1352929774 27257 80.91.229.3 (14 Nov 2012 21:49:34 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 14 Nov 2012 21:49:34 +0000 (UTC) Cc: 12883@debbugs.gnu.org To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Wed Nov 14 22:49:44 2012 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TYkq6-0007Yw-RA for guile-bugs@m.gmane.org; Wed, 14 Nov 2012 22:49:43 +0100 Original-Received: from localhost ([::1]:41596 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYkpw-00056C-Uy for guile-bugs@m.gmane.org; Wed, 14 Nov 2012 16:49:32 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:53734) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYkps-000550-Ad for bug-guile@gnu.org; Wed, 14 Nov 2012 16:49:31 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TYkpp-0002hW-8i for bug-guile@gnu.org; Wed, 14 Nov 2012 16:49:28 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:60869) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYkpp-0002hS-3C for bug-guile@gnu.org; Wed, 14 Nov 2012 16:49:25 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TYkqP-0007jV-QJ for bug-guile@gnu.org; Wed, 14 Nov 2012 16:50:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Stefan Israelsson Tampe Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-guile@gnu.org Resent-Date: Wed, 14 Nov 2012 21:50:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12883 X-GNU-PR-Package: guile X-GNU-PR-Keywords: Original-Received: via spool by 12883-submit@debbugs.gnu.org id=B12883.135292975229653 (code B ref 12883); Wed, 14 Nov 2012 21:50:01 +0000 Original-Received: (at 12883) by debbugs.gnu.org; 14 Nov 2012 21:49:12 +0000 Original-Received: from localhost ([127.0.0.1]:42886 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TYkpa-0007iD-Nu for submit@debbugs.gnu.org; Wed, 14 Nov 2012 16:49:11 -0500 Original-Received: from mail-qa0-f51.google.com ([209.85.216.51]:49056) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TYkpX-0007i5-1I for 12883@debbugs.gnu.org; Wed, 14 Nov 2012 16:49:08 -0500 Original-Received: by mail-qa0-f51.google.com with SMTP id t11so719192qaa.3 for <12883@debbugs.gnu.org>; Wed, 14 Nov 2012 13:48:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=0hNoXlqgG+iO/73wqu6Kh9OlGvoIQr//OVll1QEFFmM=; b=A45hdXiMVvWKe/4SZEBGtgEZyuUA5Ar6JUUH9CRdyyJe8tdoP6EJn6WzBU1AnEKU1L 1Nws3Hbz3Bc0oKlqejIvXoXP36l2oXQbYNEXbDmHQukykK7xxWa3WpKNlkE1wFQKA6yz nhSNJfuaM13P70vSFLMSHBGgENU8Ss6kjMzrActyeu8Wyj7bp/Hep3TZjGWqSlDG7lwa ymOaM/xHh66eGaZQ9UTMuGbs4Z/O6d3dEpHMeV71xBmGPt0nkqFEt7j4vv1xfP8rw2sA 2HhoL2/NxERbREslo0V6cSgnoBBvgGJIkQ+t4GqCnVPtwDXS1BCm/H9dI1h3anZfKvGO oXXw== Original-Received: by 10.49.5.137 with SMTP id s9mr6032882qes.64.1352929709153; Wed, 14 Nov 2012 13:48:29 -0800 (PST) Original-Received: by 10.49.121.104 with HTTP; Wed, 14 Nov 2012 13:48:29 -0800 (PST) In-Reply-To: <871ufwfbny.fsf@gnu.org> X-Spam-Score: 0.1 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-Spam-Score: -0.7 (/) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.bugs:6571 Archived-At: --047d7bea3476b85ca004ce7b7e3b Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Hey, the unroll code looks really weird in find-dominating-lexical, I know it's difficult to just come in and propose a change, but hey it can only help :-) With this code, (define (find-dominating-lexical exp effects env db) (define (entry-matches? v1 v2) (match (if (vector? v1) v1 v2) (#(exp* name sym db) (tree-il=3D? exp exp*)) (_ #f))) (define (unroll db base n) (log 'unroll db base n) ;; logging the code (or (zero? n) (and (< base (vlist-length db)) (match (vlist-ref db base) (('lambda . h*) ;; See note in find-dominating-expression. (and (not (depends-on-effects? effects &all-effects)) (unroll db (1+ base) (1- n)))) ((#(exp* effects* ctx*) . h*) (and (effects-commute? effects effects*) (unroll db (1+ base) (1- n)))))))) (let ((h (tree-il-hash exp))) (and (effect-free? (exclude-effects effects &type-check)) (vhash-assoc exp env entry-matches? (hasher h)) (let ((env-len (vlist-length env)) (db-len (vlist-length db))) (let lp ((n 0) (m 0)) (and (< n env-len) (match (vlist-ref env n) ((#(exp* name sym db-len*) . h*) (log 'lp name db-len* n m (- db-len db-len*)) ;; logging the code (let ((niter (- (- db-len db-len*) m))) ;; niter added here (stis) (and (unroll db m niter) (if (and (=3D h h*) (tree-il=3D? exp* exp)) (make-lexical-ref (tree-il-src exp) name sym) (lp (1+ n) (- db-len db-len*))))))))))))) I get the log log lp x 20 0 0 2) (log unroll # 0 2) (log unroll # 1 1) (log unroll # 2 0) (log lp x 17 1 2 5) (log unroll # 2 3) (log unroll # 3 2) (log unroll # 4 1) (log unroll # 5 0) (log lp x 14 2 5 8) (log unroll # 5 3) (log unroll # 6 2) (log unroll # 7 1) (log unroll # 8 0) (log lp w 12 3 8 10) (log unroll # 8 2) (log unroll # 9 1) (log unroll # 10 0) (log lp failure 9 4 10 13) (log unroll # 10 3) (log unroll # 11 2) (log unroll # 12 1) (log unroll # 13 0) This looks better no? am I surfing at a differnt planet? (We could even remove the duplicate checks if we like but it's unimportant for the end result) /Stefan On Wed, Nov 14, 2012 at 4:26 PM, Ludovic Court=E8s wrote: > Hello, > > This piece of code triggers a CSE bug: > > --8<---------------cut here---------------start------------->8--- > (use-modules (ice-9 match)) > > (define (snix-derivation->guix-package derivation) > (match derivation > (((_ _ _)) > #t))) > --8<---------------cut here---------------end--------------->8--- > > Or just: > > --8<---------------cut here---------------start------------->8--- > (define (snix-derivation->guix-package v) > (let ((failure > (lambda () > (error 'match "no matching pattern")))) > (if (and (pair? v) > (null? (cdr v))) > (let ((w foo) > (x (cdr w))) > (if (and (pair? x) > (null? (cdr x))) > #t > (failure))) > (failure)))) > --8<---------------cut here---------------end--------------->8--- > > Details: > > --8<---------------cut here---------------start------------->8--- > scheme@(guile-user) [1]> ,bt > In geiser/evaluation.scm: > 59:13 26 (call-with-result #) > In unknown file: > 25 (call-with-output-string # ice-9/r4rs.scm:236:3 (p)>) > In ice-9/r4rs.scm: > 176:4 24 (with-output-to-port # /dev/pts/3>> #) > In geiser/evaluation.scm: > 63:19 23 (#) > In ice-9/r4rs.scm: > 180:4 22 (with-error-to-port # /dev/pts/3>> #) > In geiser/evaluation.scm: > 64:45 21 (#) > 75:21 20 (ev) > In system/base/compile.scm: > 231:6 19 (compile (define (snix-derivation->guix-package v) (let > ((failure (lambda () (error (quote match) "no =85")))) (=85))) # =85) > 177:32 18 (lp (# # compile-asm (x e opts)> # =85) =85) > In language/tree-il/compile-glil.scm: > 65:2 17 (compile-glil #guix-packag= e > (lambda ((name . snix-derivation->guix-package)) (la=85> =85) > In language/tree-il/optimize.scm: > 44:6 16 (optimize! # ()) (define snix-derivation->guix-package (lambda ((=85> =85) > In language/tree-il/cse.scm: > 537:31 15 (visit # (define snix-derivation->guix-package (lambda ((name=85> =85) > 543:33 14 (visit # snix-derivation->guix-package (lambda ((name . snix-der=85> =85) > 483:32 13 (visit #guix-package > (lambda ((name . snix-derivation->guix-package)) (lambda-ca=85> =85) > 537:31 12 (visit # snix-derivation->guix-package)) (lambda-case (((v) #f #f #f () (v-66965)) > (let (=85> =85) > 543:33 11 (visit # (let (failure) (failure-66977) ((lambda () (lambda-case=85> =85) > 430:34 10 (visit # (lambda-case ((() #f #f #f () ()) (apply (primitive er=85> =85) > 496:31 9 (visit # v-66965)) (if (apply (primitive null?) (apply (primitive =85> =85) > 496:31 8 (visit # (primitive cdr) (lexical v v-66965))) (let (x) (x-66968) ((ap=85> =85) > 430:34 7 (visit # (toplevel w))) (begin (toplevel foo) (let (failure) (f=85> =85) > 553:39 6 (lp (# (lambda-case ((() #f #f #f () ()) (apply (primitive err=85>) =85) > 429:33 5 (visit # (lambda-case ((() #f #f #f () ()) (apply (primitive er=85> =85) > 370:41 4 (lp (# (apply (primitive error) (const match) (const "no mat=85>) =85) > 403:15 3 (return # ()) (apply (primitive error) (const match) (const "no m=85> =85) > 333:28 2 (find-dominating-lexical # ((() #f #f #f () ()) (apply (primitive error) (const ma=85> =85) > 315:10 1 (unroll # 8 1) > In ice-9/vlist.scm: > 303:8 0 (vlist-ref # 8) > scheme@(guile-user) [1]> ,locals > Local variables: > $11 =3D vlist =3D # > $12 =3D index =3D 8 > $13 =3D index =3D 0 > $14 =3D base =3D #(#() #f 0 0 0) > $15 =3D offset =3D 0 > $16 =3D content =3D #() > $17 =3D offset =3D 0 > scheme@(guile-user) [1]> ,error > ice-9/vlist.scm:303:8: In procedure vlist-ref: > ice-9/vlist.scm:303:8: Value out of range: 0 > --8<---------------cut here---------------end--------------->8--- > > Ludo=92. > > > > --047d7bea3476b85ca004ce7b7e3b Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Hey, the unroll code looks really weird in find-dominating-lexical, I know = it's difficult to
just come in and propose a change, but hey it can= only help :-)

With this code,

(define (find-dominating-lexic= al exp effects env db)
=A0=A0=A0 (define (entry-matches? v1 v2)
=A0=A0=A0=A0=A0 (match (if (vec= tor? v1) v1 v2)
=A0=A0=A0=A0=A0=A0=A0 (#(exp* name sym db)
=A0=A0=A0= =A0=A0=A0=A0=A0 (tree-il=3D? exp exp*))
=A0=A0=A0=A0=A0=A0=A0 (_ #f)))=A0=A0=A0=A0=A0
=A0=A0=A0 (define (unroll db base n)
=A0=A0=A0=A0= =A0 (log 'unroll db base n)=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ;; logging the= code
=A0=A0=A0=A0=A0 (or (zero? n)
=A0=A0=A0=A0=A0=A0=A0=A0=A0 (and (< bas= e (vlist-length db))
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (match (= vlist-ref db base)
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ((&#= 39;lambda . h*)
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ;; S= ee note in find-dominating-expression.
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0 (and (not (depends-on-effects? effects &all-effects)= )
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (unroll = db (1+ base) (1- n))))
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 = ((#(exp* effects* ctx*) . h*)
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0 (and (effects-commute? effects effects*)
=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (unroll db (1+ base) (1- n)))= )))))

=A0=A0=A0 (let ((h (tree-il-hash exp)))
=A0=A0=A0=A0=A0 (and (effect= -free? (exclude-effects effects &type-check))
=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0 (vhash-assoc exp env entry-matches? (hasher h))
=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0 (let ((env-len (vlist-length env))
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (db-len (vlist-length db))= )
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (let lp ((n 0) (m 0))
=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (and (< n env-len)
=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (match (vlist-ref env n)
= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ((#(exp* na= me sym db-len*) . h*)
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (log = 9;lp name db-len* n m (- db-len db-len*))=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0 ;; logging the code
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0 (let ((niter (- (- db-len db-len*) m)))=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ;; niter= added here (stis)
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (a= nd (unroll db m niter)
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (if (and (=3D h h*) (tree-il=3D? ex= p* exp))
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (make-lexical-ref (tree-il-src exp) na= me sym)
=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (lp (1+ n) (- db-len db-len*))))))))))= )))

I get the log
log lp x 20 0 0 2)

(log unroll #<vhash 1df5e= e0 22 pairs> 0 2)

(log unroll #<vhash 1df5ee0 22 pairs> 1 1= )

(log unroll #<vhash 1df5ee0 22 pairs> 2 0)

(log lp x = 17 1 2 5)

(log unroll #<vhash 1df5ee0 22 pairs> 2 3)

(log unroll #&l= t;vhash 1df5ee0 22 pairs> 3 2)

(log unroll #<vhash 1df5ee0 22 = pairs> 4 1)

(log unroll #<vhash 1df5ee0 22 pairs> 5 0)

(log lp x 14 2 5 8)

(log unroll #<vhash 1df5ee0 22 pairs> = 5 3)

(log unroll #<vhash 1df5ee0 22 pairs> 6 2)

(log un= roll #<vhash 1df5ee0 22 pairs> 7 1)

(log unroll #<vhash 1df= 5ee0 22 pairs> 8 0)

(log lp w 12 3 8 10)

(log unroll #<vhash 1df5ee0 22 pairs>= 8 2)

(log unroll #<vhash 1df5ee0 22 pairs> 9 1)

(log u= nroll #<vhash 1df5ee0 22 pairs> 10 0)

(log lp failure 9 4 10 1= 3)

(log unroll #<vhash 1df5ee0 22 pairs> 10 3)

(log unroll #&= lt;vhash 1df5ee0 22 pairs> 11 2)

(log unroll #<vhash 1df5ee0 2= 2 pairs> 12 1)

(log unroll #<vhash 1df5ee0 22 pairs> 13 0)<= br>

This looks better no? am I surfing at a differnt planet?
(We cou= ld even remove the duplicate checks if we like but it's unimportant for= the end result)

/Stefan


On Wed, Nov 14, 2012 at 4:26 PM, Ludovic Court=E8s <ludo@gnu.org>= wrote:
Hello,

This piece of code triggers a CSE bug:

--8<---------------cut here---------------start------------->8---
(use-modules (ice-9 match))

(define (snix-derivation->guix-package derivation)
=A0 (match derivation
=A0 =A0 (((_ _ _))
=A0 =A0 =A0#t)))
--8<---------------cut here---------------end--------------->8---

Or just:

--8<---------------cut here---------------start------------->8---
(define (snix-derivation->guix-package v)
=A0 (let ((failure
=A0 =A0 =A0 =A0 =A0(lambda ()
=A0 =A0 =A0 =A0 =A0 =A0(error 'match "no matching pattern")))= )
=A0 =A0 (if (and (pair? v)
=A0 =A0 =A0 =A0 =A0 =A0 =A0(null? (cdr v)))
=A0 =A0 =A0 =A0 (let ((w foo)
=A0 =A0 =A0 =A0 =A0 =A0 =A0 (x (cdr w)))
=A0 =A0 =A0 =A0 =A0 (if (and (pair? x)
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(null? (cdr x)))
=A0 =A0 =A0 =A0 =A0 =A0 =A0 #t
=A0 =A0 =A0 =A0 =A0 =A0 =A0 (failure)))
=A0 =A0 =A0 =A0 (failure))))
--8<---------------cut here---------------end--------------->8---

Details:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user) [1]> ,bt
In geiser/evaluation.scm:
=A0 =A0 59:13 26 (call-with-result #<procedure ev ()>)
In unknown file:
=A0 =A0 =A0 =A0 =A0 25 (call-with-output-string #<procedure 33727c0 at i= ce-9/r4rs.scm:236:3 (p)>)
In ice-9/r4rs.scm:
=A0 =A0 176:4 24 (with-output-to-port #<variable 3374bb0 value: #<out= put: file /dev/pts/3>> #<procedure 4725360 at geiser/evaluation=85= >)
In geiser/evaluation.scm:
=A0 =A0 63:19 23 (#<procedure 4725360 at geiser/evaluation.scm:60:15 ()&= gt;)
In ice-9/r4rs.scm:
=A0 =A0 180:4 22 (with-error-to-port #<variable 33748f0 value: #<outp= ut: file /dev/pts/3>> #<procedure 4725300 at geiser/evaluation.=85= >)
In geiser/evaluation.scm:
=A0 =A0 64:45 21 (#<procedure 4725300 at geiser/evaluation.scm:64:21 ()&= gt;)
=A0 =A0 75:21 20 (ev)
In system/base/compile.scm:
=A0 =A0 231:6 19 (compile (define (snix-derivation->guix-package v) (let= ((failure (lambda () (error (quote match) "no =85")))) (=85))) #= =85)
=A0 =A0177:32 18 (lp (#<procedure compile-glil (x e opts)> #<proce= dure compile-asm (x e opts)> #<procedure compile-bytecode (ass=85>= =85) =85)
In language/tree-il/compile-glil.scm:
=A0 =A0 =A065:2 17 (compile-glil #<tree-il (define snix-derivation->g= uix-package (lambda ((name . snix-derivation->guix-package)) (la=85> = =85)
In language/tree-il/optimize.scm:
=A0 =A0 =A044:6 16 (optimize! #<tree-il (lambda () (lambda-case ((() #f = #f #f () ()) (define snix-derivation->guix-package (lambda ((=85> =85= )
In language/tree-il/cse.scm:
=A0 =A0537:31 15 (visit #<tree-il (lambda () (lambda-case ((() #f #f #f = () ()) (define snix-derivation->guix-package (lambda ((name=85> =85)<= br> =A0 =A0543:33 14 (visit #<tree-il (lambda-case ((() #f #f #f () ()) (def= ine snix-derivation->guix-package (lambda ((name . snix-der=85> =85)<= br> =A0 =A0483:32 13 (visit #<tree-il (define snix-derivation->guix-packa= ge (lambda ((name . snix-derivation->guix-package)) (lambda-ca=85> = =85)
=A0 =A0537:31 12 (visit #<tree-il (lambda ((name . snix-derivation->g= uix-package)) (lambda-case (((v) #f #f #f () (v-66965)) (let (=85> =85)<= br> =A0 =A0543:33 11 (visit #<tree-il (lambda-case (((v) #f #f #f () (v-6696= 5)) (let (failure) (failure-66977) ((lambda () (lambda-case=85> =85)
=A0 =A0430:34 10 (visit #<tree-il (let (failure) (failure-66977) ((lambd= a () (lambda-case ((() #f #f #f () ()) (apply (primitive er=85> =85)
=A0 =A0496:31 =A09 (visit #<tree-il (if (apply (primitive pair?) (lexica= l v v-66965)) (if (apply (primitive null?) (apply (primitive =85> =85) =A0 =A0496:31 =A08 (visit #<tree-il (if (apply (primitive null?) (apply = (primitive cdr) (lexical v v-66965))) (let (x) (x-66968) ((ap=85> =85) =A0 =A0430:34 =A07 (visit #<tree-il (let (x) (x-66968) ((apply (primitiv= e cdr) (toplevel w))) (begin (toplevel foo) (let (failure) (f=85> =85) =A0 =A0553:39 =A06 (lp (#<tree-il (let (failure) (failure-66973) ((lambd= a () (lambda-case ((() #f #f #f () ()) (apply (primitive err=85>) =85) =A0 =A0429:33 =A05 (visit #<tree-il (let (failure) (failure-66973) ((lam= bda () (lambda-case ((() #f #f #f () ()) (apply (primitive er=85> =85) =A0 =A0370:41 =A04 (lp (#<tree-il (lambda () (lambda-case ((() #f #f #f = () ()) (apply (primitive error) (const match) (const "no mat=85>) = =85)
=A0 =A0403:15 =A03 (return #<tree-il (lambda () (lambda-case ((() #f #f = #f () ()) (apply (primitive error) (const match) (const "no m=85> = =85)
=A0 =A0333:28 =A02 (find-dominating-lexical #<tree-il (lambda () (lambda= -case ((() #f #f #f () ()) (apply (primitive error) (const ma=85> =85) =A0 =A0315:10 =A01 (unroll #<vhash 2c63040 8 pairs> 8 1)
In ice-9/vlist.scm:
=A0 =A0 303:8 =A00 (vlist-ref #<vhash 2c63040 8 pairs> 8)
scheme@(guile-user) [1]> ,locals
=A0 Local variables:
=A0 $11 =3D vlist =3D #<vhash 2c63040 8 pairs>
=A0 $12 =3D index =3D 8
=A0 $13 =3D index =3D 0
=A0 $14 =3D base =3D #(#() #f 0 0 0)
=A0 $15 =3D offset =3D 0
=A0 $16 =3D content =3D #()
=A0 $17 =3D offset =3D 0
scheme@(guile-user) [1]> ,error
ice-9/vlist.scm:303:8: In procedure vlist-ref:
ice-9/vlist.scm:303:8: Value out of range: 0
--8<---------------cut here---------------end--------------->8---

Ludo=92.




--047d7bea3476b85ca004ce7b7e3b--