From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Tassilo Horn Newsgroups: gmane.emacs.bugs Subject: bug#16238: 24.3.50; pcase docs (and possibly pcase) wrong Date: Tue, 24 Dec 2013 10:37:06 +0100 Message-ID: <87ha9yvbct.fsf@thinkpad.tsdh.org> References: <87ob46vcfl.fsf@thinkpad.tsdh.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1387877893 21570 80.91.229.3 (24 Dec 2013 09:38:13 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 24 Dec 2013 09:38:13 +0000 (UTC) To: 16238@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Dec 24 10:38:19 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1VvORO-0003t4-Qb for geb-bug-gnu-emacs@m.gmane.org; Tue, 24 Dec 2013 10:38:18 +0100 Original-Received: from localhost ([::1]:37180 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VvORO-0006xM-DV for geb-bug-gnu-emacs@m.gmane.org; Tue, 24 Dec 2013 04:38:18 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:42877) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VvORF-0006xA-HG for bug-gnu-emacs@gnu.org; Tue, 24 Dec 2013 04:38:14 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VvORA-0005qJ-6i for bug-gnu-emacs@gnu.org; Tue, 24 Dec 2013 04:38:09 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:51967) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VvOR9-0005qE-Vg for bug-gnu-emacs@gnu.org; Tue, 24 Dec 2013 04:38:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1VvOR9-0006AI-Aq for bug-gnu-emacs@gnu.org; Tue, 24 Dec 2013 04:38:03 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Tassilo Horn Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 24 Dec 2013 09:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 16238 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 16238-submit@debbugs.gnu.org id=B16238.138787783523629 (code B ref 16238); Tue, 24 Dec 2013 09:38:02 +0000 Original-Received: (at 16238) by debbugs.gnu.org; 24 Dec 2013 09:37:15 +0000 Original-Received: from localhost ([127.0.0.1]:37753 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VvOQM-000690-S1 for submit@debbugs.gnu.org; Tue, 24 Dec 2013 04:37:15 -0500 Original-Received: from out3-smtp.messagingengine.com ([66.111.4.27]:40582) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VvOQJ-00068q-Pq for 16238@debbugs.gnu.org; Tue, 24 Dec 2013 04:37:13 -0500 Original-Received: from compute4.internal (compute4.nyi.mail.srv.osa [10.202.2.44]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id 6D64320EAB for <16238@debbugs.gnu.org>; Tue, 24 Dec 2013 04:37:08 -0500 (EST) Original-Received: from frontend1 ([10.202.2.160]) by compute4.internal (MEProxy); Tue, 24 Dec 2013 04:37:08 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=from:to:subject:references:date :in-reply-to:message-id:mime-version:content-type; s=smtpout; bh=h4EFDzebiS5ag6R6UfIG6g4j6d0=; b=PnQbIbTF8zuPJNTwCKAHSvLQtia9 cSaCMBV5v2BoQwWLL/osaR3fFvoJOIKY65sa/vvfbveorhuvJza45GT0EnnZGWwG Df8w+LHDaSElujt4zg4398ZKR9nPgeG56kGMZGyutbgwSuB4ZkdImSIAUHg4NS1P IrZU6AImeNAvv9k= X-Sasl-enc: IxUf8joJNGlOD3eeaeGMKOQjSLyecZeo6ir7DB8ee4JG 1387877827 Original-Received: from thinkpad.tsdh.org (unknown [91.67.164.26]) by mail.messagingengine.com (Postfix) with ESMTPA id ABFFCC00E93 for <16238@debbugs.gnu.org>; Tue, 24 Dec 2013 04:37:07 -0500 (EST) In-Reply-To: <87ob46vcfl.fsf@thinkpad.tsdh.org> (Tassilo Horn's message of "Tue, 24 Dec 2013 10:13:50 +0100") User-Agent: Gnus/5.130008 (Ma Gnus v0.8) Emacs/24.3.50 (gnu/linux) 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-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:82505 Archived-At: Tassilo Horn writes: > ELISP> (evaluate '(fn x (add 1 x)) nil) > (lambda > (val) > (evaluate body > (cons > (cons arg val) > env))) > > But shouldn't `arg' be substituted with 'x and `body' with '(add 1 x)? It seems the `lambda' is the problem that prevents substitution of arg and body. By doing some kinda strange quoting I can get it right, but IMHO that shouldn't be needed: --8<---------------cut here---------------start------------->8--- (defun evaluate (exp env) (pcase exp (`(add ,x ,y) (+ (evaluate x env) (evaluate y env))) (`(call ,fun ,arg) (funcall (evaluate fun env) (evaluate arg env))) (`(fn ,arg ,body) `(lambda (val) (evaluate ',body (cons (cons ',arg val) env)))) ((pred numberp) exp) ((pred symbolp) (cdr (assq exp env))) (_ (error "Unknown expression %S" exp)))) --8<---------------cut here---------------end--------------->8--- ELISP> (evaluate '(fn x (add 1 x)) nil) (lambda (val) (evaluate '(add 1 x) (cons (cons 'x val) env))) ELISP> (evaluate '(call (fn x (add 1 x)) 3) nil) 4 (#o4, #x4, ?\C-d) Bye, Tassilo