From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.devel Subject: Re: Guidelines for the "symbol" syntax class Date: Mon, 4 Jan 2016 04:34:04 +0200 Message-ID: <5689DA1C.7000701@yandex.ru> References: <5688AD13.7050904@yandex.ru> <5689C0CA.7050005@yandex.ru> <5689CC5C.4000408@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1451874865 17204 80.91.229.3 (4 Jan 2016 02:34:25 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 4 Jan 2016 02:34:25 +0000 (UTC) Cc: emacs-devel To: John Yates Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Jan 04 03:34:18 2016 Return-path: Envelope-to: ged-emacs-devel@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 1aFuyP-0006fO-2Q for ged-emacs-devel@m.gmane.org; Mon, 04 Jan 2016 03:34:17 +0100 Original-Received: from localhost ([::1]:43607 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aFuyO-0001bV-23 for ged-emacs-devel@m.gmane.org; Sun, 03 Jan 2016 21:34:16 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41953) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aFuyK-0001bD-39 for emacs-devel@gnu.org; Sun, 03 Jan 2016 21:34:13 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aFuyF-0007CS-W2 for emacs-devel@gnu.org; Sun, 03 Jan 2016 21:34:12 -0500 Original-Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]:36990) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aFuyF-0007CO-PU for emacs-devel@gnu.org; Sun, 03 Jan 2016 21:34:07 -0500 Original-Received: by mail-wm0-x22d.google.com with SMTP id f206so194158630wmf.0 for ; Sun, 03 Jan 2016 18:34:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-type:content-transfer-encoding; bh=izaTgqY76dXtrUnETmnh2jdyFv88bBFvDw1fLOL149A=; b=0DL4IZoQVq9ZjSF/jyem1435At+I4C+9CP6w+Djg5Z309xCGjLbmtQAzD0gVT4HGM3 buVqjM7ozJTRnM68ys4WgK6dRyiKCNA+WiHQeUX3Vb6BFQHs5xA/b4GL2xuiEEanepKE Nl6MqVgdBhwu3LDnOBV+ETBh/ODE+kswfKZPjbel1w/fphbWqlOgpWa2FknvK+MEeWsF 5lBtGzJ7dwzUM5boY5lG/LqaNDKu5BUQev2gw7xMofPq9oHlYryLI6LY4kXELhOgJBO2 nn775S8UaJ4jIPOmH6Wq1onS6FT7ZRypqW0O7QoMzcdbP4ef0SJ7HPrx70rxFfEpSKTd jlNg== X-Received: by 10.194.173.233 with SMTP id bn9mr93228766wjc.1.1451874847166; Sun, 03 Jan 2016 18:34:07 -0800 (PST) Original-Received: from [192.168.1.2] ([185.105.175.24]) by smtp.googlemail.com with ESMTPSA id z3sm72746269wjx.38.2016.01.03.18.34.05 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 03 Jan 2016 18:34:06 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:43.0) Gecko/20100101 Thunderbird/43.0 In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22d X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:197561 Archived-At: On 01/04/2016 04:21 AM, John Yates wrote: > On Sun, Jan 3, 2016 at 8:35 PM, Dmitry Gutov > wrote: > > > > => [:<=>, :==, :===, :eql?, :hash, :casecmp, :+, :*, :%, :[], :[]=, > :insert, :length, :size, :bytesize, :empty?, ...] > > It seems similar to C++'s operator keyword. Am I getting closer? Is > the colon required to abut the subsequent characters or can one write : > <=> (note intervening space)? No space allowed. See this usage example: irb(main):003:0> "abc" == "def" => false irb(main):004:0> String.instance_method(:==) => # irb(main):005:0> "abc".size => 3 irb(main):006:0> String.instance_method(:size) => # irb(main):007:0> "abc".method(:size) => # irb(main):008:0> "abc".method(:size).call => 3 You can have Symbols with any name, though. So they are not tied to methods, variables or anything. Here's a good explanation: http://www.randomhacks.net/2007/01/20/13-ways-of-looking-at-a-ruby-symbol/, in particular, comparison #6 rings true: Ruby Symbols are similar to Lisp symbols. In Lisp, one can reference a dynamically bound variable, or call a function, using a symbol: (let ((sym 'car)) (funcall sym nil)) or even (let ((sym 'car)) (funcall (symbol-function sym) nil)) which is similar to "abc".method(:size).call I've tried above.