From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Ted Zlatanov Newsgroups: gmane.emacs.devel Subject: Re: New library num-base-converters Date: Tue, 15 Aug 2017 09:40:04 -0400 Organization: =?utf-8?B?0KLQtdC+0LTQvtGAINCX0LvQsNGC0LDQvdC+0LI=?= @ Cienfuegos Message-ID: <87mv71lzkb.fsf@lifelogs.com> References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1502804434 14278 195.159.176.226 (15 Aug 2017 13:40:34 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 15 Aug 2017 13:40:34 +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 Tue Aug 15 15:40:30 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 1dhc52-0003BR-At for ged-emacs-devel@m.gmane.org; Tue, 15 Aug 2017 15:40:24 +0200 Original-Received: from localhost ([::1]:33997 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dhc58-0002JJ-GX for ged-emacs-devel@m.gmane.org; Tue, 15 Aug 2017 09:40:30 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41269) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dhc4w-0002Hu-7L for emacs-devel@gnu.org; Tue, 15 Aug 2017 09:40:19 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dhc4q-0004NM-5B for emacs-devel@gnu.org; Tue, 15 Aug 2017 09:40:18 -0400 Original-Received: from [195.159.176.226] (port=46706 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dhc4p-0004Mg-V0 for emacs-devel@gnu.org; Tue, 15 Aug 2017 09:40:12 -0400 Original-Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1dhc4h-00020I-28 for emacs-devel@gnu.org; Tue, 15 Aug 2017 15:40:03 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Original-Lines: 35 Original-X-Complaints-To: usenet@blaine.gmane.org X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Cancel-Lock: sha1:lPoOV3QCeOIZ75aIOfCmsaShAWY= 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:217567 Archived-At: On Tue, 15 Aug 2017 03:55:19 -0400 Stefan Monnier wrote: >> +(defun nbc-number-base-converter (num base-in base-out) >> + "Translate NUM, a string representing an integer, to a different base. >> +BASE-IN, an integer, is the basis of the input NUM. >> +BASE-OUT, an integer, is the basis to display NUM." SM> Having a string as both input and output is a bad API, I think. It's OK for a parser :) SM> All one needs is basically to add a `base` arg to number-to-string SM> (there's already one for string-to-number). I think that's a good improvement as well, especially if it works for larger bases and errors out if the base is out of range. On Tue, 15 Aug 2017 18:49:45 +0900 (JST) Tino Calancha wrote: TC> It's better API than not having API at all; it provides me the flexibility TC> to handle input as '0xff', '#xff' or 'ff'. Not that bad. So one approach is to write your library so it parses and converts in one shot, as it does today. This limits its utility and reusability. The other approach is to follow Stefan's suggestion to improve `number-to-string' and `string-to-number' in the core, and then to add to your library a dedicated parser that can accept all the possible inputs you want. So your library would be that parser plus glue to `number-to-string' and `string-to-number'. Maybe also a fallback for backwards compatibility if the core `number-to-string' and `string-to-number' are less capable. I think that solution would benefit Emacs developers and users the most, long-term. Ted