From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Should records be able to mimic primitive types? Date: Sun, 24 Sep 2017 12:44:42 -0400 Message-ID: References: <8777899d-ca8e-212c-b8bf-2f8da4c54836@cs.ucla.edu> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1506271506 27269 195.159.176.226 (24 Sep 2017 16:45:06 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 24 Sep 2017 16:45:06 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Sep 24 18:45:03 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dwA1d-0006jz-Mv for ged-emacs-devel@m.gmane.org; Sun, 24 Sep 2017 18:45:01 +0200 Original-Received: from localhost ([::1]:38767 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwA1l-0005bA-3q for ged-emacs-devel@m.gmane.org; Sun, 24 Sep 2017 12:45:09 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50178) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwA1Z-0005b3-PH for emacs-devel@gnu.org; Sun, 24 Sep 2017 12:44:58 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwA1W-0000NK-Ij for emacs-devel@gnu.org; Sun, 24 Sep 2017 12:44:57 -0400 Original-Received: from [195.159.176.226] (port=52037 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwA1W-0000MR-B4 for emacs-devel@gnu.org; Sun, 24 Sep 2017 12:44:54 -0400 Original-Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1dwA1L-0005Xs-Rf for emacs-devel@gnu.org; Sun, 24 Sep 2017 18:44:43 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 19 Original-X-Complaints-To: usenet@blaine.gmane.org Cancel-Lock: sha1:tmxRw0Lpd4G0+rqDMj90BXC7qEY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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" Xref: news.gmane.org gmane.emacs.devel:218749 Archived-At: > As mentioned, such invariants can be written conditionally to no `fset' > calls happening. If `fset' is used, all invariants are trivially broken. Emacs was designed with the intention to make it easy to change pretty much any part of its behavior. `fset` is one of the tools for that, but it's far from the only one. We can't list all the ways someone can shoot himself in the foot with Emacs Lisp, and even less automatically check them. So we have to limit ourselves to something more realistic, which is to focus on the problems which do occur with some reasonable probability. This said, if you do want to avoid such structs, I won't object (tho I'll find it a waste of time) as long as the check is done at compile-time (so it has 0 cost at run-time), e.g. in the `cl-defstruct` macro. Stefan