diff options
author | EuAndreh <eu@euandre.org> | 2021-06-07 22:11:40 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2021-06-07 22:11:40 -0300 |
commit | f285818db4b7a783120882340e193dcf572b383f (patch) | |
tree | 6f6c13e5cd56a9be280b067567ffffe9b1b67605 /locale/fr/LC_MESSAGES/_tils/2021-04-24-three-way-conditional-for-number-signs.po | |
parent | TODOs.md: Add #task-6a3a99ec-dd86-b8b3-b1eb-f9b9a4298f3a (diff) | |
parent | Add article on Codd's paper (diff) | |
download | euandre.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.po | 95 |
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 "" |