I believe Peano dot notation works the other way ’round;
A . B : C :. D
would be, as I understand it, equivalent to:
((A B) C) D
The “general principle” is that a larger number of dots indicates a larger subformula.¹
What if you need to nest parentheses? Then you use more dots. A double dot (:) is like a single dot, but stronger. For example, we write ((1 + 2) × 3) + 4 as 1 + 2 . × 3 : + 4, and the double dot isolates the entire 1 + 2 . × 3 expression into a single sub-formula to which the + 4 applies.²
A dot can be thought of as a pair of parentheses, “) (”, with implicit parentheses at the beginning and end as needed.
In general the “direction” rule for interpreting a formula ‘A.B’ will be to first indicate that the center dot “works both backwards and forwards” to give first ‘A).(B’, and then the opening and closing parentheses are added to yield ‘(A).(B)’. The extra set of pairs of parentheses is then reduced to the formula (A.B).³
So perhaps one way of thinking about it is that more dots indicates more separation.
Oh you are right, more dots indicate lower operator precedence (weaker binding), not the other way round. Though the explanations you cited seem confusing to me. Apparently by non-programmers.
I may be wrong, but I believe the name of the type family is simply Times New; the name of the italic face would then be Times New Italic rather than the contradictory Times New Roman Italic. It’s strange that the name of the roman face specifically is always used; I’d suppose it’s merely because that’s how the digital fonts were inadvertently named? Times New Roman has been the name in dropdown menus, and most laypeople are unfamiliar with roman as a term of art, so there’s no reason people wouldn’t use that name. But I wonder how the digital fonts came to be named Times New Roman rather than Times New.
Re: "I may be wrong, but I believe the name of the type family is simply Times New; the name of the italic face would then be Times New Italic rather than the contradictory Times New Roman Italic."
The name of the typeface really is Times New Roman. The roman variant is called Times New Roman Regular and the italic, Times New Roman Italic (which I agree is awkward).
The reason for this is trademarks: "Times" was a registered trademark of Linotype and so when Monotype developed a similar typeface, they used and trademarked "Times New Roman."
Some time ago, I forget when, Monotype acquired Linotype and so is now the holder of both trademarks.
Don't know if Butterick's article mentions this or not. I've read it but not recently.
Replying to my own comment because I'm wrong. I thought that Times came first and Times New Roman later, but according to this article from the New York Public Library, the typeface was designed only once (by Stanley Morison).
The metal punches were then created jointly by Linotype and Monotype, which each sold these under different names (and registered trademarks), Times by Linotype and Times New Roman by Monotype.
IIRC, the Abobe Postscript font was simply called "Times", so that is usually what Macs had installed. Microsoft Windows shipped with the Truetype font called "Times New Roman", which was similar but not identical to the printer font.
> A data race occurs any time two threads access the same memory location concurrently and non-deterministically when at least one of the accesses is a write.
From what I understand of the C++ memory model (shared by C and Rust), this is not the definition of data race – a data race occurs when two or more threads access memory concurrently where at least one access is a write and the accesses are unsynchronized. However, synchronized accesses may not have a deterministic ordering, in which case a race condition occurs.
(Confusing as it may be, I believe this is standard terminology.)
I’d argue there’s a very big difference between “x: y” and “x : y”. I can only see the former as assignment and the latter as the has-type relation.
(I find it baffling in the extreme that in many mainstream languages the convention is to write type annotations as “x: T”, both prima facie and because in those languages the notation then collides with field assignment!)
A small nit: the development of Unix began on the PDP-7 in assembly, not the PDP-11.
(The B language was implemented for the PDP-7 before the PDP-11, which are rather different machines. It’s sometimes suggested that the increment and decrement operators in C, which were inherited from B, are due to the instruction set architecture of the PDP-11, but this could not have been the case. Per Dennis Ritchie:¹
> Thompson went a step further by inventing the ++ and -- operators, which increment or decrement; their prefix or postfix position determines whether the alteration occurs before or after noting the value of the operand. They were not in the earliest versions of B, but appeared along the way. People often guess that they were created to use the auto-increment and auto-decrement address modes provided by the DEC PDP-11 on which C and Unix first became popular. This is historically impossible, since there was no PDP-11 when B was developed. The PDP-7, however, did have a few “auto-increment” memory cells, with the property that an indirect memory reference through them incremented the cell. This feature probably suggested such operators to Thompson; the generalization to make them both prefix and postfix was his own.
Another person puts it this way:²
> It's a myth to suggest C’s design is based on the PDP-11. People often quote, for example, the increment and decrement operators because they have an analogue in the PDP-11 instruction set. This is, however, a coincidence. Those operators were invented before the language [i.e. B] was ported to the PDP-11.
In any case, the PDP-11 usually gets all the love, but I want to make sure the other PDPs get some too!)
I’ve noticed that, besides the magnetism and drive for sex (which would be sufficient for a species to propagate), many people also experience the biological imperative (wanting their genes replicated) as its own separate feeling.
This makes no sense to me – it’s not a feeling I can personally relate to. I’d like to raise kids because I’d enjoy getting to teach them and share things with them, but I don’t care whether they are my biological children or not.
So it’s something I’ve wondered about. The likely why makes sense, but I don’t really get the what.
For whatever it’s worth, I also believe the two are separate feelings that aren’t always in alignment. I have no desire to procreate (gay man), but following the birth of my first nibling I felt this profound swell of emotion and drive commanding me to nurture and support its growth into an adult. It’s likely why, in my teens and 20s before I understood the full impact of the 2008 crisis, I wanted to eventually adopt children myself.
At some point in my life I unconsciously decided that charisma (in this sense) was something I did not want to exercise, and was perhaps even wrong to exercise.
In so many facets of our lives already, our wants are being manipulated for the benefit of others. And who am I to decide what is important? For things that involve other people, I’d rather make that decision collectively. I want the thoughts, opinions, and feelings of people who don’t possess or exercise charisma to have space and weight.
I was struck by another comment calling the feedback loop a "virtuous cycle". Early-elementary-school me found it disturbingly weird and an unwanted responsibility for others' choices. Consciously resolved by "I'm so not doing this thing anymore".
Perhaps styles of leadership might be taught early, so there's greater awareness of possibilities/alternatives?
People may also be interested in the Tako shell, which is a fork of Xonsh that “sacrifice[s] some of the ‘fancy stuff’ so that basic shell operations work as expected, the codebase is small, and things are as performant as can be expected from a shell written in Python.”
I liked the idea of tako - a slightly slimmed down, less clunky, version of Xonsh. However, it requires significant patching in order to work with modern python (I tried with 3.12, but I believe some of the breaking changes occur in 3.9+).
Specifically, there are a number of imports from collections which appear to no longer work, and I had to install a fairly old version of collections to get Set and MutableSequence (which `tako/takoshell/tools.py` subclasses).
`hz.mit.edu` is not a git forge, so I don't think I can submit a PR without e-mailing the author.
https://github.com/official-stockfish/fishtest/wiki/Fishtest...
reply