aboutsummaryrefslogtreecommitdiff
path: root/po/eo/LC_MESSAGES/_tils/2021-04-24-three-way-conditional-for-number-signs.po
blob: 925a00b0aaaf80a17d9e2aa0b6fdc66f8707c1c2 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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 ""