From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.devel Subject: Re: 10 problems with Elisp, part 10 Date: Fri, 09 Aug 2024 09:08:09 +0200 Message-ID: <877ccq5g2u.fsf@dataswamp.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39562"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: emacs-devel@gnu.org Cancel-Lock: sha1:ckTvZvN5ZFOkT1bO5d8Gbt4bxT0= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Aug 09 09:20:07 2024 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 1scJux-000AAM-29 for ged-emacs-devel@m.gmane-mx.org; Fri, 09 Aug 2024 09:20:07 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1scJu4-0000Wp-Tc; Fri, 09 Aug 2024 03:19:13 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1scJji-0001u3-2N for emacs-devel@gnu.org; Fri, 09 Aug 2024 03:08:30 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1scJjf-0005Ix-U1 for emacs-devel@gnu.org; Fri, 09 Aug 2024 03:08:29 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1scJjb-0009NS-1g for emacs-devel@gnu.org; Fri, 09 Aug 2024 09:08:23 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io 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, HEADER_FROM_DIFFERENT_DOMAINS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 09 Aug 2024 03:19:10 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:322550 Archived-At: Abraham S.A.H." via "Emacs development discussions. wrote: >> It doesn't take much experience to do cool things fast in >> Python, it is a fact. > > I agree to disagree, Emanuel!  Sorry, but I do not think > "Python is a generally better programming language". Devel time faster than in Lisp, is what I'm saying. Maybe one could have a Lisp that also was as fast or almost as fast, if one focused on that aspect. > However, as an Asian, I know no university in my country or > neighbour countries teaching Lisp. Even so. >> No. Just think, remove this line in Lisp >> >> some-item)) > > Why should  I?  Why should I  use `kill-line`?  Why not  > removing that item with `kill-sexp`? Indeed, be an excellent Emacs user, that is all it takes. No, the syntax makes it harder and slower to edit for everyone. More syntax errors, more typing. One thing one could try is to replace boring, trivial stuff with non-Lisp syntax. For example setting up the interface. Here is one example from my own code. (Note: Over one in five interfaces in the Emacs source uses Lisp and not the `interactive' format string.) ;; ... (interactive (if (numberp current-prefix-arg) (list current-prefix-arg) current-prefix-arg)) (unless end (setq end 73)) (unless step (setq step (min 10 (max 2 (/ end 10))))) (unless i (setq i 0)) (unless (and (numberp i) (<= 0 i) (numberp end) (< 0 end) (numberp step) (< 0 step)) (error "Bogus indata")) This is 402 chars! But here is a 135-char solution that expresses the same: [ end :range 0< :default 73 :prefix-arg step :range-cut 2-10 :default (/ end 10) i :range 0<= :default 0 ] And here is a 88 char solution: [ end :r 0< :d 73 :pa step :rc 2-10 :d (/ end 10) i :r 0<= :d 0 ] Also with: :prompt-string (:ps), :doc-string (:ds) ... That way, we could keep Lisps elegance and power for where people cared about it, for example solving interesting algorithmic problems and so on. -- underground experts united https://dataswamp.org/~incal