From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jacob Hrbek Newsgroups: gmane.lisp.guile.devel Subject: Strongly typed language my ass Date: Tue, 20 Sep 2022 09:01:01 +0000 Message-ID: <3izAWevitpu2Y1OBwQnrCwhVv4CePmVfWKxl-0oCg1yBwy1TfQcHwbHBUk9iNaZcK5WYKxmxebrZpwXAK5qM3s36qWzc1UBHH2D2XbB3jJ0=@rixotstudio.cz> Mime-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha512; boundary="------aaf43d18684a1699dda9fc91a2419542d9487baa686cba3f0eb79ecc37ae5378"; charset=utf-8 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33772"; mail-complaints-to="usenet@ciao.gmane.io" To: "guile-devel@gnu.org" Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Tue Sep 20 23:44:20 2022 Return-path: Envelope-to: guile-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 1oal2R-0008Zm-33 for guile-devel@m.gmane-mx.org; Tue, 20 Sep 2022 23:44:19 +0200 Original-Received: from localhost ([::1]:51828 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oal2Q-0002oz-1p for guile-devel@m.gmane-mx.org; Tue, 20 Sep 2022 17:44:18 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48934) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oaZ8A-0007Lw-VZ for guile-devel@gnu.org; Tue, 20 Sep 2022 05:01:28 -0400 Original-Received: from mail-40141.protonmail.ch ([185.70.40.141]:60249) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oaZ86-00067v-7W for guile-devel@gnu.org; Tue, 20 Sep 2022 05:01:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rixotstudio.cz; s=protonmail; t=1663664474; x=1663923674; bh=6T1OFVEJxsR8tk00+y1b+tNHcRYFRfXqcUitH8eI6NI=; h=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID; b=FeulNogRh2lXEqB1fzm4FR0SkMvi9enqvrWzdydjSZJbd/zy61MXULBYqU+BJe1iM wH/okzhwQw01A7MiO6nlD98hcu5j9OyKofKY+5Jn4Mh662GxPlQ05aZLGC5YhT6+7P UavYbsUTCOyati2HvvIERZG9fSxhqIeva77adv3Y5i1Oz/qu/kGsdz9FreW1+CVW2b Mw5IqvlxcbYBJqnXhTFvTUzX0kHM+WEq8nI0JmHEL1XGxbMf67LbKcCbKuM98oR5zM t659QEhjyKhbOuCfL4Gxt/RnzPZvZBOHZvOhe1PTNhujjo+KtY6jTiDii7T3ZP3Lqp YcginzIgufWHw== Feedback-ID: 30491181:user:proton Received-SPF: pass client-ip=185.70.40.141; envelope-from=kreyren@rixotstudio.cz; helo=mail-40141.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 20 Sep 2022 13:57:56 -0400 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.io gmane.lisp.guile.devel:21357 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------aaf43d18684a1699dda9fc91a2419542d9487baa686cba3f0eb79ecc37ae5378 Content-Type: multipart/mixed;boundary=---------------------f2797afca7ee16c73c4287e275c54ad1 -----------------------f2797afca7ee16c73c4287e275c54ad1 Content-Type: multipart/alternative;boundary=---------------------026da4de99e9623e9d12fcafd20fdeea -----------------------026da4de99e9623e9d12fcafd20fdeea Content-Transfer-Encoding: quoted-printable Content-Type: text/plain;charset=utf-8 In what world is this considered a strongly typed language when I need to = do these checks like it's a weakly typed one? =C2=A0 =C2=A0 (define* (lazy-assign key #:optional (val "")) =C2=A0 =C2=A0 =C2=A0 "Assign environmental variable KEY with an optional v= alue VAL, both =C2=A0must be a string or a thunk that evaluates to a strin= g =C2=A0 =C2=A0 = =C2=A0 =C2=A0 This procedure sets an entry in the @{%makevars} hash table" =C2=A0 =C2=A0 =C2=A0 (cond ((procedure? key) =C2=A0 =C2=A0 (set! key (key))) =C2=A0 =C2=A0 ((string? key) =C2=A0 =C2=A0 ;; FIXME-QA(Krey): Seems like a wasteful @{format} =C2=A0 =C2=A0 (set! key (format #f "~a" key))) =C2=A0 =C2=A0 ;; FIXME-QA(Krey): Make sure that the error here is clear an= d descriptive =C2=A0 =C2=A0 (else (make-non-continuable-error))) =C2=A0 =C2=A0 =C2=A0 ;; FIXME-QA(Krey): Add check for sanity of VAL =C2=A0 =C2=A0 =C2=A0 (makevars-set key (delay val))) Instead of something like: =C2=A0 (define* (lazy-assign (string-type key) #:optional (val ""))=C2=A0 = "Assign environmental variable KEY with an optional value VAL, both must b= e a string or a thunk that evaluates to a string =C2=A0 = =C2=A0 This procedure sets an entry in the @{%makevars} hash table" =C2=A0 (makevars-set key (delay val))) Notice the (string-type key) meant to declare that it's only expecting an = input that is a string or evaluates into a string which mitigates the need= to include sanity checking in every procedure.. or even something like: =C2=A0 =C2=A0 (define* (lazy-assign key:string #:optional (var:string ""))= ...) -- Jacob "Kreyren" Hrbek -----------------------026da4de99e9623e9d12fcafd20fdeea Content-Type: multipart/related;boundary=---------------------ac418455464c083f26d371b9ae7c9f42 -----------------------ac418455464c083f26d371b9ae7c9f42 Content-Type: text/html;charset=utf-8 Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij5JbiB3aGF0 IHdvcmxkIGlzIHRoaXMgY29uc2lkZXJlZCBhIHN0cm9uZ2x5IHR5cGVkIGxhbmd1YWdlIHdoZW4g SSBuZWVkIHRvIGRvIHRoZXNlIGNoZWNrcyBsaWtlIGl0J3MgYSB3ZWFrbHkgdHlwZWQgb25lPzxi cj48YnI+PGRpdj48c3Bhbj4mbmJzcDsgJm5ic3A7IChkZWZpbmUqIChsYXp5LWFzc2lnbiBrZXkg IzpvcHRpb25hbCAodmFsICIiKSk8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4mbmJzcDsgJm5ic3A7 ICZuYnNwOyAiQXNzaWduIGVudmlyb25tZW50YWwgdmFyaWFibGUgS0VZIHdpdGggYW4gb3B0aW9u YWwgdmFsdWUgVkFMLCBib3RoICZuYnNwO211c3QgYmUgYSBzdHJpbmcgb3IgYSB0aHVuayB0aGF0 IGV2YWx1YXRlcyB0byBhIHN0cmluZzwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250 LXNpemU6IDE0cHg7Ij48YnI+Jm5ic3A7ICZuYnNwOyBUaGlzIHByb2NlZHVyZSBzZXRzIGFuIGVu dHJ5IGluIHRoZSBAeyVtYWtldmFyc30gaGFzaCB0YWJsZSI8L3NwYW4+PC9kaXY+PGRpdj48YnI+ PC9kaXY+PGRpdj48c3Bhbj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAoY29uZCAoKHByb2NlZHVyZT8g a2V5KTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPiZuYnNwOyAmbmJzcDsgKHNldCEga2V5IChrZXkp KSk8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj4mbmJzcDsgJm5ic3A7ICgoc3RyaW5nPyBrZXkpPC9z cGFuPjwvZGl2PjxkaXY+PHNwYW4+Jm5ic3A7ICZuYnNwOyA7OyBGSVhNRS1RQShLcmV5KTogU2Vl bXMgbGlrZSBhIHdhc3RlZnVsIEB7Zm9ybWF0fTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPiZuYnNw OyAmbmJzcDsgKHNldCEga2V5IChmb3JtYXQgI2YgIn5hIiBrZXkpKSk8L3NwYW4+PC9kaXY+PGRp dj48c3Bhbj4mbmJzcDsgJm5ic3A7IDs7IEZJWE1FLVFBKEtyZXkpOiBNYWtlIHN1cmUgdGhhdCB0 aGUgZXJyb3IgaGVyZSBpcyBjbGVhciBhbmQgZGVzY3JpcHRpdmU8L3NwYW4+PC9kaXY+PGRpdj48 c3Bhbj4mbmJzcDsgJm5ic3A7IChlbHNlIChtYWtlLW5vbi1jb250aW51YWJsZS1lcnJvcikpKTwv c3Bhbj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxzcGFuPiZuYnNwOyAmbmJzcDsgJm5ic3A7 IDs7IEZJWE1FLVFBKEtyZXkpOiBBZGQgY2hlY2sgZm9yIHNhbml0eSBvZiBWQUw8L3NwYW4+PC9k aXY+PGRpdj48YnI+PC9kaXY+PGRpdj48c3Bhbj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAobWFrZXZh cnMtc2V0IGtleSAoZGVsYXkgdmFsKSkpPC9zcGFuPjwvZGl2PjxkaXY+PGJyPjwvZGl2Pkluc3Rl YWQgb2Ygc29tZXRoaW5nIGxpa2U6PGJyPjxicj48c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6cmdi KDAsIDAsIDApIj48c3Bhbj4mbmJzcDsgKGRlZmluZSogKGxhenktYXNzaWduIChzdHJpbmctdHlw ZSBrZXkpICM6b3B0aW9uYWwgKHZhbCAiIikpPC9zcGFuPjwvc3Bhbj48ZGl2IHN0eWxlPSJjYXJl dC1jb2xvcjpyZ2IoMCwgMCwgMCkiPjxzcGFuPiZuYnNwOyAiQXNzaWduIGVudmlyb25tZW50YWwg dmFyaWFibGUgS0VZIHdpdGggYW4gb3B0aW9uYWwgdmFsdWUgVkFMLCBib3RoIG11c3QgYmUgYSBz dHJpbmcgb3IgYSB0aHVuayB0aGF0IGV2YWx1YXRlcyB0byBhIHN0cmluZzwvc3Bhbj48L2Rpdj48 ZGl2IHN0eWxlPSJjYXJldC1jb2xvcjpyZ2IoMCwgMCwgMCkiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTRweCI+PGJyPiZuYnNwOyBUaGlzIHByb2NlZHVyZSBzZXRzIGFuIGVudHJ5IGluIHRoZSBA eyVtYWtldmFyc30gaGFzaCB0YWJsZSI8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0iY2FyZXQtY29s b3I6cmdiKDAsIDAsIDApIj48YnI+PC9kaXY+PGRpdiBzdHlsZT0iY2FyZXQtY29sb3I6cmdiKDAs IDAsIDApIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyI+Jm5ic3A7IChtYWtldmFycy1z ZXQga2V5IChkZWxheSB2YWwpKSk8L3NwYW4+PC9kaXY+PGJyPk5vdGljZSB0aGUgKHN0cmluZy10 eXBlIGtleSkgbWVhbnQgdG8gZGVjbGFyZSB0aGF0IGl0J3Mgb25seSBleHBlY3RpbmcgYW4gaW5w dXQgdGhhdCBpcyBhIHN0cmluZyBvciBldmFsdWF0ZXMgaW50byBhIHN0cmluZyB3aGljaCBtaXRp Z2F0ZXMgdGhlIG5lZWQgdG8gaW5jbHVkZSBzYW5pdHkgY2hlY2tpbmcgaW4gZXZlcnkgcHJvY2Vk dXJlLi48YnI+PGJyPm9yIGV2ZW4gc29tZXRoaW5nIGxpa2U6PGJyPjxicj4mbmJzcDsgJm5ic3A7 IChkZWZpbmUqIChsYXp5LWFzc2lnbiBrZXk6c3RyaW5nICM6b3B0aW9uYWwgKHZhcjpzdHJpbmcg IiIpKSAuLi4pPGJyPjxicj48L2Rpdj4KPGRpdiBjbGFzcz0icHJvdG9ubWFpbF9zaWduYXR1cmVf YmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWw7IGZvbnQtc2l6ZTogMTRweDsiPgogICAg PGRpdiBjbGFzcz0icHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stdXNlciI+CiAgICAgICAgPGRp dj4tLSBKYWNvYiAiS3JleXJlbiIgSHJiZWs8L2Rpdj48L2Rpdj4KPC9kaXY+Cg== -----------------------ac418455464c083f26d371b9ae7c9f42-- -----------------------026da4de99e9623e9d12fcafd20fdeea-- -----------------------f2797afca7ee16c73c4287e275c54ad1 Content-Type: application/pgp-keys; filename="publickey - kreyren@rixotstudio.cz - 0x1677DB82.asc"; name="publickey - kreyren@rixotstudio.cz - 0x1677DB82.asc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="publickey - kreyren@rixotstudio.cz - 0x1677DB82.asc"; name="publickey - kreyren@rixotstudio.cz - 0x1677DB82.asc" LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgp4ak1FWUFsM0ZoWUpLd1lCQkFI YVJ3OEJBUWRBUUtBcG1kUjh0RzlhS0VkeHdISi9aS08yQ3ZaTVJXUHQKQk5OR3FKVWhwMkxOTDJ0 eVpYbHlaVzVBY21sNGIzUnpkSFZrYVc4dVkzb2dQR3R5WlhseVpXNUFjbWw0CmIzUnpkSFZrYVc4 dVkzbyt3bzhFRUJZS0FDQUZBbUFKZHhZR0N3a0hDQU1DQkJVSUNnSUVGZ0lCQUFJWgpBUUliQXdJ ZUFRQWhDUkN0MDMwVXEwTDhxUlloQkJaMzI0S1RqS2hsYzRFakI2M1RmUlNyUXZ5cDU3UUEKLzB0 bGJkbkNJenJlS1htdlcyWFNZWHpBSm90SmR4Q3pFK1hBVE0rcVBES3pBUUNjYkhwN3l3NitBcm5n CmVTdEdGbi9vbGh4VFBkcHU2NDFDTEdpZ1BtRW9CYzQ0QkdBSmR4WVNDaXNHQVFRQmwxVUJCUUVC QjBEYQppSTNqUWZTb2kzRFo0L05mbXhHZHNSc3Y5L0JxTWdXNWo2amRCcWt5SUFNQkNBZkNlQVFZ RmdnQUNRVUMKWUFsM0ZnSWJEQUFoQ1JDdDAzMFVxMEw4cVJZaEJCWjMyNEtUaktobGM0RWpCNjNU ZlJTclF2eXBIY0VCCkFPUXhTL0ovVU0wZWU4azJqYmxpV2QvUTBJZCtYOFVIQlhoeXFWUmMyMnFy QVFETEhjVzk3V1FiU0pGbwoxOWt3dDcwT3lIZXBGNkxXcEREMFB1SVNaRDZJQ2c9PQo9OWtaZwot LS0tLUVORCBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCg== -----------------------f2797afca7ee16c73c4287e275c54ad1-- --------aaf43d18684a1699dda9fc91a2419542d9487baa686cba3f0eb79ecc37ae5378 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: ProtonMail wnUEARYKAAYFAmMpgToAIQkQrdN9FKtC/KkWIQQWd9uCk4yoZXOBIwet030U q0L8qfpLAP9xGVcJEM/pArBjsPELpI3o4XBMo4dVxA/gDbOPtPrGMwD+Nsg0 uNih0MAuNXJkupT9xXeLpRqOoEdKWnp2XxKnxw4= =zcSA -----END PGP SIGNATURE----- --------aaf43d18684a1699dda9fc91a2419542d9487baa686cba3f0eb79ecc37ae5378--