From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Daniel Brooks Newsgroups: gmane.emacs.devel Subject: Re: lengths and other stuff Date: Sun, 27 Dec 2020 15:32:23 -0800 Message-ID: <87pn2urfjs.fsf@db48x.net> References: <87o8ivumn5.fsf@telefonica.net> <87pn2wudab.fsf@db48x.net> <87mty0c3m1.fsf@gnus.org> <83czywnb86.fsf@gnu.org> <87im8ob707.fsf@gnus.org> <87eejcb6nx.fsf@gnus.org> <875z4ob5c9.fsf@gnus.org> <87a6u09nkq.fsf@gnus.org> <875z4o9jdg.fsf@gnus.org> <87r1nb8yoj.fsf@gnus.org> <83blefkte2.fsf@gnu.org> <87h7o69aa8.fsf@gnus.org> <87pn2uq3ty.fsf@logand.com> <87ft3qq2kz.fsf@logand.com> <8735zqsvc8.fsf_-_@db48x.net> <87zh1y6e3r.fsf@gnus.org> <87y2hirg9l.fsf@db48x.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="2197"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) Cc: Lars Ingebrigtsen , emacs-devel@gnu.org, eliz@gnu.org, Tomas Hlavaty , "Alfred M. Szmidt" To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Dec 28 00:34:00 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ktfY0-0000Rj-09 for ged-emacs-devel@m.gmane-mx.org; Mon, 28 Dec 2020 00:34:00 +0100 Original-Received: from localhost ([::1]:57488 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ktfXz-0007Io-2u for ged-emacs-devel@m.gmane-mx.org; Sun, 27 Dec 2020 18:33:59 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46372) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ktfWX-0006sO-Gj for emacs-devel@gnu.org; Sun, 27 Dec 2020 18:32:33 -0500 Original-Received: from smtp-out-4.mxes.net ([2605:d100:2f:10::315]:29386) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ktfWV-0005Rj-1q for emacs-devel@gnu.org; Sun, 27 Dec 2020 18:32:29 -0500 Original-Received: from Customer-MUA (mua.mxes.net [10.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.mxes.net (Postfix) with ESMTPSA id CDDED7598A; Sun, 27 Dec 2020 18:32:24 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mxes.net; s=mta; t=1609111946; bh=6kEb7PmbmO+wRpU8cmuhVW9qCnVQTpB9DOo1SzhT8e8=; h=From:To:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=FHYyktxy0DlNh0dfQEAzOpoPEf4GCyOx11GTs80YJX6yBOA/g8cNqMYpCzhnVxEXS jymsKuBP4Z5l+HKpo+mHW7yFlwzLs1G7PnlPOLyDYtlrC3ttg1HDzMpupP48UN4lml zcUJoY8B9WMx9lKPbFRneTWE7bZ/5jhbnHVHUDuk= Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGOfPtRkwAAABJQ TFRFpKfbdou67PD6JjJgAwUWXGSeIcyLHgAAAkZJREFUOI1VU8Fy6yAMxLi+Q13fCZ3cnQL3dqTc 7RD+/1feStDXVnXHDuvVSivZTMba2GPdw3gyCGcMAFxTyrTd9dwGoxHiZX9PmRFUHYAQlGGtXY+F Uk0SJOxgJiUEnH1qkitT9D+pQub7qGAmUbR6bu3CvI96Yv6QqkBBMrsyfZccr1/RDXGDTLf4P7ZY glVxe2V+/ACXWO1gvDO9/gDRpFFVmPluvLcmBjd5H6d8DEte+Pbk4rcY/Fa5tLKLOtCZsuQKYhpa LOkYDT7hESya7/WIET3lfQBqX0pwFtbI832Is0ayMUR9B+12xjgPCQ089cfwkCkX6L5TPmRelJTh zMS0Sz1PyjLAMCUWjcmgQLWQMds+e3aaauZDf9dU9A2/8kPVF2odCUoMKHkfjJR+mbgC+DRiycw5 3XSqGe6HmhN/AWjHypkAXOAFW5EiuA1ge2GiZuMb0s1fSEXcATeLUfbyEY2L8yPOmdSsdghQXx3K pz2eoeXuYvMCINVFDrCdNfVUp4eJ6cSEbjbgFjBEvonGGTrgv9cHjAc8aVgSAPoxaONbzfwhDIhR at7IIS7fAGiDSwIA9alhhTBzfA7YM2FY6eMwayrIGK8FDFmshmUA43WqhFtpvoqG9HHaJ7fqtgTz 8EWVkgZgtsylFliHDgk0MB7KAEC45C/rgnGvanNLXyzOeTzcT2nw/N44gfrtYXRQLoz9Q3TgmJRx 2Mx/Q51qzpm+l3m8z2SWBqC5+PZXAtNYlGFf/gKfHfjFkDT4x7od7R+w3Ls+ZdQBuQAAAABJRU5E rkJggg== In-Reply-To: (Stefan Monnier's message of "Sun, 27 Dec 2020 18:23:13 -0500") X-Sent-To: Received-SPF: none client-ip=2605:d100:2f:10::315; envelope-from=db48x@db48x.net; helo=smtp-out-4.mxes.net X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:261949 Archived-At: Stefan Monnier writes: >> A quick check does show that they were moved to subr.el from cl-lib.el >> just three years ago. Nearly four now. Also that they were called >> cl-cadar and so on. Weird. > > That's because they suck. They feel to me like programming in > assembler. You're usually much better off using `nth` or `pcase` or > `cl-destructuring-bind`, ... Definitely. But a common enough pattern is to use list structure as if it were a struct, with constructors and accessor methods that hide the implementation details: (defun make-complex (x y) (cons 'complex (cons x y)) (defun complex-x (c) (and (eq 'complex (car c)) (cadr c))) (defun complex-y (c) (and (eq 'complex (car c)) (cddr c))) That is, the c*r methods are good and useful predefined accessors, but you give them appropriate names so that you're not using them directly. That way you don't make your users remember how to use these generic accessors with your custom data type. db48x