aboutsummaryrefslogtreecommitdiff
path: root/locale/fr/LC_MESSAGES/_tils/2021-04-24-three-way-conditional-for-number-signs.po
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-06-07 22:11:40 -0300
committerEuAndreh <eu@euandre.org>2021-06-07 22:11:40 -0300
commitf285818db4b7a783120882340e193dcf572b383f (patch)
tree6f6c13e5cd56a9be280b067567ffffe9b1b67605 /locale/fr/LC_MESSAGES/_tils/2021-04-24-three-way-conditional-for-number-signs.po
parentTODOs.md: Add #task-6a3a99ec-dd86-b8b3-b1eb-f9b9a4298f3a (diff)
parentAdd article on Codd's paper (diff)
downloadeuandre.org-f285818db4b7a783120882340e193dcf572b383f.tar.gz
euandre.org-f285818db4b7a783120882340e193dcf572b383f.tar.xz
Merge remote-tracking branch 'refs/remotes/vps/main'
Diffstat (limited to 'locale/fr/LC_MESSAGES/_tils/2021-04-24-three-way-conditional-for-number-signs.po')
-rw-r--r--locale/fr/LC_MESSAGES/_tils/2021-04-24-three-way-conditional-for-number-signs.po95
1 files changed, 95 insertions, 0 deletions
diff --git a/locale/fr/LC_MESSAGES/_tils/2021-04-24-three-way-conditional-for-number-signs.po b/locale/fr/LC_MESSAGES/_tils/2021-04-24-three-way-conditional-for-number-signs.po
new file mode 100644
index 0000000..925a00b
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/_tils/2021-04-24-three-way-conditional-for-number-signs.po
@@ -0,0 +1,95 @@
+#
+msgid ""
+msgstr ""
+
+msgid "title: Three-way conditional for number signs"
+msgstr ""
+
+msgid "date: 2021-04-24 3"
+msgstr ""
+
+msgid "layout: post"
+msgstr ""
+
+msgid "lang: en"
+msgstr ""
+
+msgid "ref: three-way-conditional-for-number-signs"
+msgstr ""
+
+msgid ""
+"A useful macro from Paul Graham's [On "
+"Lisp](http://www.paulgraham.com/onlisptext.html) book:"
+msgstr ""
+
+msgid ""
+"(defmacro nif (expr pos zero neg)\n"
+" (let ((g (gensym)))\n"
+" `(let ((,g ,expr))\n"
+" (cond ((plusp ,g) ,pos)\n"
+" ((zerop ,g) ,zero)\n"
+" (t ,neg)))))\n"
+msgstr ""
+
+msgid ""
+"The latest example I can think of is section 1.3.3 of [Structure and "
+"Interpretation of Computer "
+"Programs](https://mitpress.mit.edu/sites/default/files/sicp/index.html), "
+"which I was reading recently:"
+msgstr ""
+
+msgid ""
+"(define (search f neg-point pos-point)\n"
+" (let ((midpoint (average neg-point pos-point)))\n"
+" (if (close-enough? neg-point post-point)\n"
+" midpoint\n"
+" (let ((test-value (f midpoint)))\n"
+" (cond ((positive? test-value)\n"
+" (search f neg-point midpoint))\n"
+" ((negative? test-value)\n"
+" (search f midpoint pos-point))\n"
+" (else midpoint))))))\n"
+msgstr ""
+
+msgid ""
+"(define (search f neg-point pos-point)\n"
+" (let ((midpoint (average neg-point pos-point)))\n"
+" (if (close-enough? neg-point post-point)\n"
+" midpoint\n"
+" (nif (f midpoint)\n"
+" (search f neg-point midpoint)\n"
+" (midpoint)\n"
+" (search f midpoint pos-point)))))\n"
+msgstr ""
+
+msgid ""
+"It also avoids `cond`'s extra clunky parentheses for grouping, which is "
+"unnecessary but built-in."
+msgstr ""
+
+msgid ""
+"As a macro, I personally feel it tilts the balance towards expressivenes "
+"despite its extra cognitive load toll."
+msgstr ""
+
+msgid ""
+"After I looked at this macro, I started seeing opportunities to using it in "
+"many places, and yet I didn't see anyone else using it."
+msgstr ""
+
+msgid ""
+"Not that the book should introduce such macro this early, but I couldn't "
+"avoid feeling bothered by not using the `nif` macro, which could even remove"
+" the need for the intermediate `test-value` variable:"
+msgstr ""
+
+#~ msgid ""
+#~ "After I looked at this macro, I started seeing opportunities to using it in "
+#~ "many places, and yet I didn't see anyonelse using it."
+#~ msgstr ""
+
+#~ msgid ""
+#~ "Not that the book should introduce such macro this early, but I couldn't "
+#~ "avoid feeling bothered by not using a `nif` macro, which could even remove "
+#~ "the need for the intermediate `test-value` variable:"
+#~ msgstr ""