Hacker News new | past | comments | ask | show | jobs | submit | bradrn's comments login

Looks like the results are exported to a CSV file: https://walzr.com/bop-spotter/export


For a while I used XMonad (as a window manager) together with Xfce (as a desktop environment). It had its rough edges, but I really liked the experience. I could easily fit my windows on the screen the way I wanted to, while still getting the integration of a well-designed desktop environment.

Alas, I had to drop this setup on moving to Wayland. And I can’t get it back easily, because Wayland compositors generally don’t allow for their window managers to be swapped out. I now use Sway WM, which is perfectly acceptable… but I still miss my tiling desktop environment.



That article has a paper link: https://doi.org/10.1002/adsu.202400184


The key bit in that article is this:

> caused by the filling or emptying of an underground magma chamber

In this case, the magma chamber underlies the entire area of the Phlegraean Fields. As more or less magma enters the chamber, the ground in the area slowly moves up or down.


> Those come from latin lex, rex

No, in fact they descend from the accusative forms, lēgem and rēgem. I don’t know much about the precise evolution, but gy strikes me as a perfectly normal sound change, especially before /e/. Looks like it happened in the other Romance languages too: compare French roi, Portuguese rei, Italian re, etc.


And in English as well. German "tag" (as in "guten tag"), to Old English "daeg" (with the g pronounced as a y), to Middle English "day".


In that case, German switched to "t", not English from. High German is the main odd one out of the Germanic languages in this case.

Compare "Dag" (low German)"; Saterland Frisian "Dai"; West Frisian "dei"; "dag" in Old Saxon, Dutch, Norwegian, Swedish, Danish); Faroese and Icelandic "dagur"; Gothic "dags"

d -> t is one of the major High German consonant shifts. Other examples of the d -> t shift is Vater vs. vader, fader, father (from Middle English "fader", so there the "th" in modern English is also not from the German)

Others prominent changes around the same time included e.g. p -> ff (Schiff vs. ship, schip, ship, skip, skib in other Germanic languages) and /t/ -> /t:s/ etc. - compare Zwei with two, to, två in other Germanic languages.

Very few of those changes made it into English, either Old English at the time, or later - English in that respect tends to be closer to Low German than to current standard German.

(as an English speaker - or a speaker of basically any other Germanic language -, to learn German having a rough idea about the consonant shift is a major help in figuring out German vocabulary - you'll find a lot more German words are "close enough" to be understandable once you recognise the changed sounds)


But the comment you replied to was about the g-y difference at the end of the word, not the d-t at the start.


If focused on that, because the consonant shift is generally what shows us which words come from German vs. Germanic, rather than address the subsequent shift from g.

The softening of the "g" into "y", "j","i" is also a feature in other Germanic languages for many other words. E.g. in modern Norwegian "deg" (the object form of "you" / "thee" which is necessary in Norwegian still) can be pronounced both with a very pronounced g, and with a tiny shift of the tongue to soften it into a i/j. In English we have "dough" where the "g" has disappeared, but was still there in Old English, and where in modern Norwegian you again can choose /dɛɪːɡ/ or /dæɪ̯/. They all, again, share a root in Germanic with the German, where we again have a strong indication the other Germanic languages evolved their current versions from Germanic rather than German in that the German got a "t" from the consonant shift: "Teig" (vs Low German "Deeg")


Jepp, that's precis som på svenska, där “dig” uttalas “dej”. But AIUI you can see from old songs and poems, by which words it was used to rhyme with, that the spelling is how it used to be pronounced not so many centuries ago. (And yes, “dough" heter “deg” på svenska också. Så og på norsk, antar jag?)


correction: spanish is heavily ablative case instead of accusative. original statement is correct in principle since lex, rex are nominative and first in a nominative-genetive form in latin dictionaries. eg. lex, legis. rex, regis.


> spanish is heavily ablative case instead of accusative

Is it? Aren't the descendants of the ablative mostly -amante adverbs and e.g. conmigo? The wiki article of Ablative Case doesn't even mention Spanish.

Got any other examples of ablative in Spanish?



Thanks for tracking down a Wikipedia article that has citations. It didn’t originate with me and I didn’t intend to give that impression!

I’m quite disappointed with that article though. It has the heading of “discredited theories” and then lots a bunch of articles proposing the idea and demonstrating that it could in principle work, even in crude setups. Then at the very end cites a Mythbusters episode for debunking it.

My, Wikipedia has fallen.


> It's more like a preposition that exceptionally comes after the noun phrase instead of before it.

Called a ‘postposition’. And that’s precisely what ‘ago’ is!


The nonjudgmental term of art appears to be "adposition". It isn't clear to me why this was coined as "adposition" and not "apposition".

"Preposition" is already something of an unnatural word class. They have two main functions in English: to describe some kind of location ("Sam? He's with Natasha"), and to mark certain arguments to verbs ("The tools? Sam's playing with them").

It's just a coincidence that prepositions serve both of these purposes in English; in Mandarin, the same two purposes are served by completely separate word classes. Verb argument markers are preposed; location markers are postposed.


> It's just a coincidence that prepositions serve both of these purposes in English

Not really… these categories fall together in a lot of languages. It doesn’t even require prepositions: a lot of languages have case markers which can be used for both location and verbal arguments.

The specific examples you’ve given are, respectively, called the ‘comitative’ and ‘instrumental’ uses of with. These two categories are particularly prone to falling together, mostly because the boundaries between them aren’t particularly clear: for instance, if you say, I made the coffee with milk, you could say that the coffee is accompanied by the milk (comitative), but you could also say that you’re using the milk (instrumental).


The kinds of visualisation discussed by the article remind me very strongly of Glamorous Toolkit [0], most recently posted to HN at [1]. It’s something I’ve never really felt a need for, mostly because the software I work on is mostly very small in terms of code size (for physics research etc.). The idea is certainly fascinating, however… there are a lot of possibilities for a codebase which can introspect itself.

[0] https://gtoolkit.com/

[1] https://news.ycombinator.com/item?id=33267518


They define paramorphisms more rigorously on pages 4–5.


That's not at all what they define in that section. They define their chosen combinator that is called "para" which is as close to what they're alluding to as a bicycle is to a semi truck.


They didn't coin the term paramorphism. Lambert Marteens did in 1992 [0]. It's an extension of the concept of catamorphisms. These terms were invented by people knowledgeable about category theory [1].

I also disagree with the notion that they aren't really doing math. It's very straightforward to derive programs by proving other properties of these recursive combinators. I would recommend reading A tutorial on the universality and expressiveness of fold [1] as an example of this; folds are catamorphisms, which is why I bring it up.

[0]: https://www.researchgate.net/publication/256269748_Paramorph...

[1]: https://www.cambridge.org/core/journals/journal-of-functiona...


> They didn't coin the term paramorphism. Lambert Marteens did in 1992

I literally linked that paper.

> It's very straightforward to derive programs by proving other properties of these recursive combinators.

Cool they don't do that. There's a word for being obliquely related: allusion.

It's amazing how much benefit of the doubt CS people get. In math you either prove a theorem/lemma by writing it out in full or you... have nothing. In CS people tell nice stories, draw cool diagrams, write down random formulae and everyone is just hmm yes brilliant.


> they're alluding to math[1] but they're not doing math.

So they're applying the math somebody else already put together? It isn't clear what your opinion is. Are you saying it's not valid if it's not math?

Let's judge the paper by what they say they did in the abstract.

> We show that synthesizing recursive functional programs using a class of primitive recursive combinators is both simpler and solves more benchmarks from the literature than previously proposed approaches.

It sounds like their proposed metrics are subjective ("simpler") or data-oriented ("solves more ... than previously").

> Our method synthesizes paramorphisms, a class of programs that includes the most common recursive programming patterns on algebraic data types.

They're applying a pre-existing concept ("paramorphisms") to a problem domain where (it is implied) it either has not been applied before, or with a new spin.

> The crux of our approach is to split the synthesis problem into two parts: a multi-hole template that fixes the recursive structure, and a search for non-recursive program fragments to fill the template holes.

They give a novel (,it is implied) structural model for solving their problem using their chosen concept as their key contribution to the study of this problem. It is indirectly suggested that factoring the recursive and non-recursive parts apart allows them to be handled more effectively individually.

---

Regarding your specific complaints: I do not see any immediate need for new math. Nor are they inventing new words, at least in the title or abstract. You may have legitimate concerns about general academic practice, but if you're going to levy those criticisms at this paper, you could do your arguments better justice than with a drive-by.


> I literally linked that paper.

You did; I overlooked that. I don't know why you're implying the authors invented the term and made up the combinator just now, then.

> Cool they don't do that.

Their program is basically doing an automated version of what Graham Hutton did in that paper, except they rewrite functions using para instead of fold.

Edit:

> It's amazing how much benefit of the doubt CS people get. In math you either prove a theorem/lemma by writing it out in full or you... have nothing. In CS people tell nice stories, draw cool diagrams, write down random formulae and everyone is just hmm yes brilliant.

You seem to have a chip on your shoulder. I don't know why you're telling me this.


What they're "alluding to" is a standard combinator that has existed under the name "paramorphism" for a long time. Here is Jeremy Gibbons's "Origami programming" https://www.cs.ox.ac.uk/jeremy.gibbons/publications/origami.... from 2003:

    [...] capture this modified recursion pattern explicitly as a higher-order operator; in this case, the operator is known as a paramorphism [92]. In the case of lists, we could define
    
    paraL :: (α → (List α, β) → β) → β → List α → β
    paraL f e Nil = e
    paraL f e (Cons x xs) = f x (xs, paraL f e xs)
I don't know of an older source for this particular syntactic presentation, though apparently if you put in the work to translate Squiggol to Haskell, you can read this concrete syntax out of Meijer et al.'s Bananas paper from 1991.

I think what you're criticising is that the name "paramorphism" was adopted from category-theory-on-a-blackboard to functional-programming-that-actually-runs-on-a-computer. That ship sailed 30 years ago; this paper from 2024 is not what caused it to sail. I also think that you're incorrect to criticize this. Analogies are often very helpful.

You are right that the people who pointed you to Meertens's paper were not helpful in clearing up the confusion, since your confusion is exactly that Meertens's paper talks about the other meaning of the term "paramorphism".


You're correct that they aren't defining the concept of paramorphisms in that section -- but that's because paramorphisms have been present in the literature for a long time:

> for a detailed review of paramorphisms from a formal perspective, see [Meertens 1992]

To your original point, the title of this paper is only using terms ("paramorphisms", "recursive", and "program synthesis") that are decidedly not novel.

For the benefit of other readers:

As to why "paramorphisms" are singled out as a concept worthy of having their own name, I recommend the 1991 paper "Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire" by Meijer, Fokkinga, and Paterson, which is much more readable than the referenced Meertens paper.

We all know what an "infinite loop" is; a natural question is whether there are any looping constructs that cannot get caught in an infinite loop. The "for-each" loop has become popular in imperative languages; the reason it works is because it does a kind of structural iteration over finite data which fits a regular pattern.

A "catamorphism" precisely captures this notion of structural iteration (really, structural recursion), for a vast family of data types (the "inductively defined" ones). But for any algorithm where you'd use an unbounded loop (or unbounded recursion), it's not always easy (or possible!) to implement that algorithm using catamorphic recursion instead -- and they're not always the most performant, either (e.g. you can't short-circuit the recursion).

So we've gone from something that is too powerful/expressive (unbounded recursion/iteration) to something that is not powerful/expressive enough (catamorphic recursion/iteration), with the dividing line of "allows infinite loops" somewhere in the middle. The study of general recursion schemes, which includes paramorphisms, is essentially the study of alternatives to unbounded recursion/iteration that are better than catamorphisms on one or more desiderata.


> present in the literature for a long time:

You're the second person to link the exact same paper I did in my first response.

> To your original point, the title of this paper is only using terms ("paramorphisms", "recursive", and "program synthesis") that are decidedly not novel.

They italicize paramorphism in the abstract. We all very well know that italics means novel usage. So again: let's drop the charade that everything is above board here.


> They italicize paramorphism in the abstract. We all very well know that italics means novel usage.

Or, they're writing for an audience that isn't necessarily familiar with paramorphisms and other morphisms, but still is familiar with functional programming.


> let's drop the charade that everything is above board here.

OK. Since you're opposed to merely alluding to things (your italics, which I find funny), could you please state explicitly the misconduct you are alleging?


> You're the second person to link the exact same paper I did in my first response.

Yes; it sounds like you're suggesting they should be defining these concepts themselves instead of saying somebody else did them. But that would be academic dishonesty. So you must be alluding to something else.

> We all very well know that italics means novel usage.

You say that as though expecting everyone to agree. I do not. I personally use italics because several people I have spoken with, including my advisor, feel that boldface is shouty. Underline is rarely used for a similar reason. Italic font is the the only available form of typographic \emph{asis}; it is used (if sparingly) for key terms and ideas that the reader's attention should be drawn to, which include novel ideas, but can be much more than that.


It’s not part of the spec, apparently, but Adobe discusses it at https://helpx.adobe.com/acrobat/kb/link-html-pdf-page-acroba....


The deadline for YC's W25 batch is 8pm PT tonight. Go for it!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: