@@ -43,11 +43,11 @@ the current design and some streamlining we may want to consider this year.
43
43
### Implicit vs explicit
44
44
45
45
** Information is implicit when it is * implied* but not * expressed* .** The
46
- potential ergonomic wins are pretty easy to see: information that's * implied * is
47
- easy to forget to write down, and writing it down feels like a distraction that
48
- adds unhelpful noise to code; leaving it implicit reduces that friction. Yet
49
- implicitness gets a bad rap, with Python going so far as to state "explicit is
50
- better than implicit" as a core design rule. Why?
46
+ potential ergonomic wins are pretty easy to see: forcing you to write down
47
+ information that's obvious (because it's already implied) is a pain, because it
48
+ adds distracting noise and is easy to forget. Allowing you to leave it implicit
49
+ reduces that friction. Yet implicitness gets a bad rap, with Python going so far
50
+ as to state "explicit is better than implicit" as a core design rule. Why?
51
51
52
52
Implicitness can be very powerful. After all, the compiler knows a * lot* about
53
53
your code, and it's possible to leverage that to inject behavior in all kinds of
@@ -74,8 +74,8 @@ but relevant or surprising information is kept front and center.
74
74
75
75
There are basically two dimensions of the reasoning footprint for implicitness:
76
76
77
- - ** Where can you elide?** . In other words, how do you know when implicitness may be in play?
78
- - ** How are the gaps filled in?** . In other words, how do you know what is being implied?
77
+ - ** Where can you elide?** In other words, how do you know when implicitness may be in play?
78
+ - ** How are the gaps filled in?** In other words, how do you know what is being implied?
79
79
80
80
A well-designed feature will tailor both of these dimensions to match (or inform)
81
81
the programmer's mental model, and to make the data you have to keep in your
@@ -143,7 +143,7 @@ particular:
143
143
- Trade power/precision: type inference happens only for variable bindings; data
144
144
types and functions must include complete, explicit signatures. This choice
145
145
gives you the bulk of the ergonomic benefits, allowing for very powerful
146
- inference, but insuring that the scope of the inference is kept local.
146
+ inference, but ensuring that the scope of the inference is kept local.
147
147
148
148
- Limit context: similarly, because data types and functions are annotated, it's
149
149
easy to determine the information that's influencing the outcome of
0 commit comments