From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Taylan Ulrich Bayirli/Kammer Newsgroups: gmane.lisp.guile.bugs Subject: bug#18356: Should partial continuations capture the dynamic environment? Date: Fri, 29 Aug 2014 20:12:09 +0200 Message-ID: <87lhq7go7a.fsf@taylan.uni.cx> NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1409335996 1570 80.91.229.3 (29 Aug 2014 18:13:16 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 29 Aug 2014 18:13:16 +0000 (UTC) To: 18356@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Fri Aug 29 20:13:09 2014 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 1XNQfb-0002vn-Lt for guile-bugs@m.gmane.org; Fri, 29 Aug 2014 20:13:07 +0200 Original-Received: from localhost ([::1]:43586 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XNQfb-0005t4-72 for guile-bugs@m.gmane.org; Fri, 29 Aug 2014 14:13:07 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47247) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XNQfX-0005sx-QE for bug-guile@gnu.org; Fri, 29 Aug 2014 14:13:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XNQfW-00035c-UQ for bug-guile@gnu.org; Fri, 29 Aug 2014 14:13:03 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:33942) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XNQfW-00035Y-RV for bug-guile@gnu.org; Fri, 29 Aug 2014 14:13:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1XNQfW-00010o-IK for bug-guile@gnu.org; Fri, 29 Aug 2014 14:13:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Taylan Ulrich Bayirli/Kammer Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Fri, 29 Aug 2014 18:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 18356 X-GNU-PR-Package: guile X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-guile@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.14093359453841 (code B ref -1); Fri, 29 Aug 2014 18:13:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 29 Aug 2014 18:12:25 +0000 Original-Received: from localhost ([127.0.0.1]:53739 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XNQet-0000zs-Tz for submit@debbugs.gnu.org; Fri, 29 Aug 2014 14:12:24 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:45277) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XNQeq-0000ze-Nd for submit@debbugs.gnu.org; Fri, 29 Aug 2014 14:12:21 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XNQek-0002mn-Rx for submit@debbugs.gnu.org; Fri, 29 Aug 2014 14:12:15 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:38736) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XNQek-0002mj-PX for submit@debbugs.gnu.org; Fri, 29 Aug 2014 14:12:14 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:46994) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XNQej-0005mw-V9 for bug-guile@gnu.org; Fri, 29 Aug 2014 14:12:14 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XNQej-0002mP-4g for bug-guile@gnu.org; Fri, 29 Aug 2014 14:12:13 -0400 Original-Received: from mail-la0-x230.google.com ([2a00:1450:4010:c03::230]:58089) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XNQei-0002m6-Sh for bug-guile@gnu.org; Fri, 29 Aug 2014 14:12:13 -0400 Original-Received: by mail-la0-f48.google.com with SMTP id gl10so3204421lab.35 for ; Fri, 29 Aug 2014 11:12:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:message-id:from:to:subject; bh=YY+x+FUcLy1B581VOgnI5NEf4fhsbSjBUa0rG729aXA=; b=aoeEFQNxnrr+QHRH9XTFBhDLUyghBsISaDkszW0DKanLVI0loYjH1Gkru42V5ndj9b x6LYahvKYjGrOszLup88iYMYTBDZoxIAhv3Cxi5izy1NDVqqZGQ2PU+Uq/d8VFP1wY/2 IWvpPRBnJPMKYhbfX77IurbCdNuudkxpuaakFWYqkX7cJ9oVhHNdk3H21PgZt6YjvzzX runCwoUqEpI59Y4KCnRrUFT2vTTwdWFjqddcQ8Yu2OLPP+pl4OFU5q94Kwfn5ecU+LKg MebkUpZJsIdaeUknLrQoSwwmAvWAMCiP5BMwtik8AW3sbN+TzfaGziWjJw4Cjt7Bk5qT EakA== X-Received: by 10.152.23.6 with SMTP id i6mr12780033laf.39.1409335931176; Fri, 29 Aug 2014 11:12:11 -0700 (PDT) Original-Received: from taylan.uni.cx (p200300514A1DE45B0213E8FFFEED36FB.dip0.t-ipconnect.de. [2003:51:4a1d:e45b:213:e8ff:feed:36fb]) by mx.google.com with ESMTPSA id js10sm423563lab.23.2014.08.29.11.12.10 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 Aug 2014 11:12:10 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.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:7542 Archived-At: On Guile 2.0.11: scheme@(guile-user)> (define (capture-dynenv) (let ((tag (make-prompt-tag "dynenv-capture"))) (call-with-prompt tag (lambda () ((abort-to-prompt tag))) (lambda (call-in-captured-dynenv) (lambda (proc) (call-in-captured-dynenv proc)))))) scheme@(guile-user)> (define param (make-parameter 0)) scheme@(guile-user)> (define dynenv (parameterize ((param 1)) (capture-dynenv))) scheme@(guile-user)> (parameterize ((param 2)) (dynenv (lambda () (param)))) $9 = 2 In other words, when a partial continuation is called, the dynamic environment at that call-time is in effect for the continuation, and not the one from when the continuation was captured. Is this behavior correct and what I'm trying to do won't work, or should the code return 1 as I had expected? For comparison, the following variant that uses call/cc works fine: (define (capture-dynenv) ((call/cc (lambda (call-in-captured-dynenv) (lambda () (lambda (proc) (call/cc (lambda (go-back) (call-in-captured-dynenv (lambda () (call-with-values proc go-back))))))))))) Taylan