There's no (practical) advantage to the circular implementation; it's just a curiosity.
It is useful for understanding laziness and some interesting theoretical tools for traversing data structures, though. For a more in-depth look at the idea of circular programs for traversal, Bird's paper (linked in the post, https://link.springer.com/article/10.1007/BF00264249) is a good start.
> that's my understanding of why these things are called 'algebraic' effects.
This is a misconception. Algebraic effects are not algebraic because they come from algebraic data types, the two features are completely independent (you can have algebraic effects without algebraic data types and vice versa).
> It's not that ConsoleOutput and ConsoleInput (however you define that using + or *) are magically 'composable' just because they're both algebraic... for that composition you need extra rules (however you specify that) because effects don't (in general) compose.
Actually, if you have two algebraic effects they can automatically compose. And this is a consequence of them both being algebraic. It's just that an algebraic effect is unrelated to an algebraic data type.
The "algebraic" in "algebraic effects" is not really related to algebraic data types, or sum or product types. I mean, I suppose they're related, since they both refer to algebra in the general sense, but there's no type-level algebra in a description of algebraic effects. (and, I suppose, you could do some type-level algebra with effects, like taking the "sum" of two effects, but again that's not what the "algebra" in "algebraic effects" is referring to)
> The big underline, though, is getting people to realize what algebra there is is not on the values that your code represents.
This is not correct. In the case of algebraic effects, the algebra is absolutely value-level.
I'm not sure I follow? For one, if algebraic isn't aiming at the ideas in an algebra, then they absolutely should be using a different name.
For two, though, the whole idea is how to compose the "value" of different effects together? My point is that the "value" is not the written value of a variable in ways that people are used to working with in their program. It will be a meta-value about some state represented by the program.
Is that not the case? If my use of the word "value" there is confusing things, I'm open to using some other words. My point is largely that the "value" of concern in effect systems is not the same as the value of a variable as people are used to reasoning. You are specifically meta-reasoning about the state of the program in ways that may not be represented by an explicit value of the program.
Not that that alone is unheard of. If you asked people to tell you the program counter of a function, they would largely get what you mean. Even if it is not something that is represented in the values of the program, itself.
> For one, if algebraic isn't aiming at the ideas in an algebra, then they absolutely should be using a different name.
Algebraic effects are certainly algebraic, they're just not directly related to algebraic data types. Both ideas are using "algebraic" at different levels, and I think trying to understand algebraic effects by referencing algebraic data types will be more confusing than helpful.
> My point is that the "value" is not the written value of a variable in ways that people are used to working with in their program.
I'm saying that (in algebraic effects) the "value" in question is precisely a normal variable that people are used to working with in programming languages. It is not a type-level value, which is the kind of value in question when we're talking about algebraic data types.
For example, if we take Groups (the algebra referenced in the post), we have a binary operation (that we might call +) along with a few other operations. We could write a piece of code like the following:
x = y + z
The "group" in question here could absolutely be an algebraic effect. And the line of code above could be implemented using algebraic effects, and interpreted using an algebraic effect handler. You don't even need types, if you didn't want them.
> For two, though, the whole idea is how to compose the "value" of different effects together?
No, not really.
Yes, algebraic effects compose well. But so do other effects systems and abstractions (applicatives, etc.). The fact that the effects compose is not what makes them algebraic, it's a consequence of it.
I don't think I can give a proper explanation in a comment, but I would point you to the paper I linked in another comment (https://arxiv.org/abs/1807.05923).
I'm not positive on what you are aiming at. I'd assume "algebraic effects" are to talk about performing algebra on the effects. That is, you are specifically going to talk about how different things combine effects, preferably in ways that honor + and * that we are used to.
If you are just pointing out that this is not, necessarily, "type" related. Agreed. Apologies if I mislead there. I was highlighting that algebraic data types has a similar problem. I did not mean to imply that these were the same topic.
My point is simply that there is no value in the program that says an effect has or has not completed. This is why I compare it to stepping through the program. The "line of code" that is active in executing code is not a first class value in your program. It is very much there, of course. But it is not a value of the program.
> I'd assume "algebraic effects" are to talk about performing algebra on the effects. That is, you are specifically going to talk about how different things combine effects
This is a misconception. The "algebra" does not refer to an algebra of effects, or combining effects in any way.
It's more like it's the other way around: "algebraic effects" are effects generated from algebras. These algebras are precisely-defined mathematical objects (like groups, monoids, etc.), so you have an "effect" that corresponds to monoids, an "effect" that corresponds to groups, and so on.
> My point is simply that there is no value in the program that says an effect has or has not completed. This is why I compare it to stepping through the program. The "line of code" that is active in executing code is not a first class value in your program.
I know: I'm trying to say that the "algebra" of "algebraic effects" do refer to first-class values. The + and * from other algebraic operations are the algebraic operations you might use for an algebraic effect.
I mean, the program snippet that I gave above contains 3 first-class values. If you write `x = y + z + 0`, or any other statement that uses the group algebra (or any other algebra), you can use algebraic effects to describe the semantics. The “first-class values” here are the x, y, and z: there’s nothing fancy going on. You can even use the group laws to show that the statement is equivalent to `x = y + z` (or whatever). It’s just normal, value-level algebra.
Right, but this is just explaining algebra. Which, I get that. Connect this to effects, for me. (And fair that just because I assert that I get it, I would wager I don't have as strong of a handle as I should have.)
My understanding for effects was more like "writes to stdout" and such. Probably better to have "opens a stream," "writes to an open stream," and "closes a stream." The algebra that I typically see is to show that you can combine some of these in such a way to either highlight a bug, or to help prevent them.
I got this because many effects typically go through hurdles to find a way to let you log to stderr without it polluting your entire effects system.
For an algebra, you have some operations and some equations. The group algebra has the + operation, and 0 and -, and all the relevant equations.
You can also form an algebra from logging. One operation might be “write to stdout”. And then a law might be `write x; write y = write (x ++ y)` where ++ is string concatenation.
This is the algebra, the algebra isn’t for combining effects at all. (Yes, you can combine algebraic effects, and the fact that they’re algebraic does help, but that’s for technical reasons that aren’t relevant)
The paper I linked in another comment has a good overview of the topic. It’s really not the kind of thing you can understand from reading a few comments, and the paper is well-written and goes over all of the main points from a pretty basic starting point.
I looked over the paper, but I confess I don't understand how it is helping. Would help a ton to have an example effect that didn't dive into distinguishing "Values", "Computations", "Value types," and "Computation types."
In fact, that it distinguishes values, computations, and the types of both seems more inline with my point? That what most "effect systems" are trying to capture are things that are not typically defined in programs?
So, again, give me some examples of effects and how you would model them. That will go a long way to demonstrate what you mean, here. Even better if you can show how this is already modeled in some code. (Note that I'm not trying to ask you to give this in a post. If you have some more things like that paper to look into, I don't mind looking there. I do plan on spending more time with the paper, already.)
Well, I gave the example of a logging effect above. In the post there’s also an example of a key-value store effect. What’s missing from these examples exactly?
All of these effects have simple operations (get and put for store, the `write` operation for the logging effect, etc.) These are all normal operations in your language: they just return values, like normal, and the laws that govern them are equivalent to the laws of any other algebra.
Elsewhere you mentioned Boolean algebra, and that people shouldn’t confuse that with algebraic effects: Boolean algebra can absolutely be another example of an algebraic effect! The operations are the Boolean operations (call them whatever you like, + or * or whatever), and the laws are the usual laws.
The point of algebraic effects is in noticing that traditional effects (logging, state, exceptions) can be thought of as algebraic the same way as Boolean algebras or monoids.
If you’re looking for an implementation, there are lots of implementations available in Haskell and other languages. However, to understand those you’d really already have to have a good understanding of the topic first, and then you’d also need to be comfortable with Haskell syntax (and probably free monads as well). I think that the paper really gives the best introduction to the topic, unfortunately there’s no way to simplify it much further.
I don't think I mentioned boolean algebra? I responded to someone else mentioning it. My problem there is still that you are going to be taught how to operate over boolean values using an algebraic construction. (Looking, I think that is accurate. Apologies if I am the one that brought it up somewhere, I don't remember that.)
Which, fair that may help some people. I just feel that this is akin to asking for people to understand algebraic effects using basic algebra from middle school. In basic algebra practices, you lean heavily on the basic operations applied to reals and see how to manipulate equations to discover both solutions and other statements about the equations. (Advanced students will eventually extend to imaginary numbers, but I don't think that changes this statement?)
Similarly, with algebraic datatypes, you learn what it means to combine the domains of types together. Since it is an algebra, you learn this in terms of the basic operations. Hence SumTypes and ProductTypes. My assertion there is that this is hard for people because they don't actually do the algebra on the domains. And, by "they" I largely mean the software that they write.
So, with algebraic effects, I would expect that this is about the ways that effects can be combined using basic algebra tools. But what is it that you are combining? In the types, you were combining domains for analysis. In effects, I'd expect that you are combining whatever it is an effect is. You seem to be saying that an effect is a standard value? But, that seems at odds with the definitions that distinguish "pure" functions from those that have "effects" being defined by things that they cause to happen.
It doesn't help that we typically talk about things that we want to preserve some property on. It isn't enough to say "writes to stderr", we want to know that it does so without clobbering someone else currently writing to the same spot. At the least, we probably want to know that it line buffers output in such a way that that is preserved.
So, when asking for an example, I'm hunting for something to meet me somewhere in the middle. Sucks that this commonly comes down to "writes to a logger."
I'm afraid I don't think I'm making progress here.
My overall point was that I felt your original comment was a little confused about algebraic effects. You seemed to think that the "algebra" in "algebraic effects" didn't refer to algebraic operations on normal values, which is incorrect. The basic middle-school algebra of a ring (+, *, etc., with all of the normal laws) does indeed give rise to an algebraic effect, and code that uses that effect can just be normal code like `x = 2 * y`. The "effect" here is the "ring" effect.
However, I don't think that this discussion is that productive. If you want to understand algebraic effects, unfortunately there is no substitute for just reading through the fundamental literature (like the paper I linked). I would love to be able to give you a short, easy-to-understand example that explains all the ideas in a few lines, but the concept just isn't that simple.
I see this a lot on this forum in particular: people like to develop a vague intuition for something rather than really understanding the concept properly, but almost always their "intuition" is very inaccurate, and they understand the thing less well than they think they do. Then, they try and teach others the concept, and those learners are even more misled.
I will try and point out some misconceptions in your last comment here, but again I will caution that I don't think you will be able to fully understand the topic just by reading these comments.
> So, with algebraic effects, I would expect that this is about the ways that effects can be combined using basic algebra tools.
I understand, but that is not what algebraic effects is about.
The "algebra" in algebraic effects doesn't refer to an algebra for combining effects, it refers to algebras like monoid etc., and you get an effect for any particular algebra.
> In effects, I'd expect that you are combining whatever it is an effect is.
This is incorrect. First, there are algebras that have no "combining" at all, and second, the algebras involved are just the normal algebras you're already familiar with, like the boolean algebra etc.
> You seem to be saying that an effect is a standard value? But, that seems at odds with the definitions that distinguish "pure" functions from those that have "effects" being defined by things that they cause to happen.
Yes, an effect is a standard value. And yes, we often want to distinguish pure functions from effectful ones.
(By the way, this does not mean that effectful functions are somehow not standard values)
However, in an algebraic effect the algebra does not combine effects.
> It isn't enough to say "writes to stderr", we want to know that it does so without clobbering someone else currently writing to the same spot.
I mean, obviously if the write is going to be performed concurrently you'll need more guarantees.
I included one law that might be important, but you could easily add more. That doesn't change the core concept.
> So, when asking for an example, I'm hunting for something to meet me somewhere in the middle. Sucks that this commonly comes down to "writes to a logger."
I'm not sure what you mean by the "middle"—middle between what two extremes? I picked the writing to a logger example because it was simple, and showed a simple law. The key-value store in the post is a little more complex, and involves a few more laws. In the paper there's even more examples: I/O etc. You have a lot of examples available to you!
If algebraic effects is not about how to manipulate effects using algebra, then I will flat out say that it is poorly named. Which, fair that that is already established and I don't expect some rando on the internet's objection to matter on that.
The paper you linked confuses me on this stance, as it explicitly goes through the effort of defining operations as distinct from the values they produce. And it then shows how they can be manipulated using operations. To quote: "Think of a value as an inert datum that needs no further computation, such as a boolean constant, a numeral, or a λ-abstraction. An operation takes a parameter p, for instance the memory location to be read, or the string to be printed, and a continuation κ, which is a suspended computation expecting the result of the operation, for instance the contents of the memory location that has been read" I read that as explicitly setting up how to use algebraic constructs on operations. You are taking the stance that that is not what they are doing?
That all said, I fully sympathize that you are likely hitting a blind spot of mine. I'm already fine reading up more on this paper later, so I'm not wanting to burden you on trying to cover it again.
I would encourage anyone interested in this question to check out the paper "What is algebraic about algebraic effects and handlers?" (https://arxiv.org/abs/1807.05923) which is a write-up of the lecture series linked in the post above. I don't think the paper is too difficult to understand, but I know that if you're not familiar with the subject area it might be intimidating.
While I like the above blog post, I don't think that it will be very useful to people trying to understand algebraic effects. I see a lot of explainers like this one that shy away from some of the more gnarly-looking maths terms in an effort to appear more approachable, but as a result they can end up giving imprecise or vague definitions. When coupled with some subtle mistakes I think it can leave beginners more confused than helped (for instance, this author seems to conflate a few different notions of "composition", and they seem to think that the presence of equations makes an effect algebraic, which isn't really what the term "algebraic" is referring to in a technical sense).
The paper I linked above is not easy, and it would probably take at least a few hours to understand, but that's because it takes about that long to understand the material.
> they seem to think that the presence of equations makes an effect algebraic, which isn't really what the term "algebraic" is referring to in a technical sense
Author here! Open to learning. Can you expand on this? What is algebraic referring to in a technical sense?
Generally speaking, it means that the effect is derived from an algebraic theory (in a specific and structured way). While equations are definitely part of most theories, you can absolutely have a theory without equations, and furthermore you can define an effect with equations that isn't algebraic. The full definition of "algebraic theory" unfortunately doesn't really fit in a comment, but I did want to push back on the idea that "an effect becomes algebraic if you add equations to it".
In the effects literature, you often also see the definition that an operation (of an effect) is "algebraic" if the operation commutes with `>>=`. This definition is actually the same as the one above, just stated in a different way.
Trying to be helpful here, sorry if it doesn’t map to your field of which I am not familiar.
The _algebra_ you learn in school is elementary algebra, using variables.
In modern math, _algebra_ or _modern_ algebra or _abstract_algebra, is the study of structures over sets with defined operations on the elements of that set.
ADTs are an example of an algebraic structure, specifically called one that converts non-trivial semantic (runtime) properties to trivial ones (T/F).
This post is dealing with the structure in another way.
If you understand magmas, monoids, etc.. that can be helpful.
But the lay description I find useful is the algebra is what _arises_ from that defined set domain and operations.
The key point is studying the structure, which is the algebraic structure, or the algebra. It is basically what pops out, not what you start with, although that is flawed.
Almost all modern math will use that _modern_ meaning of algebra.
> In modern math, _algebra_ or _modern_ algebra or _abstract_algebra, is the study of structures over sets with defined operations on the elements of that set.
To add to/extend this there's a very famous quote from Poincaré that I think is helpful:
> Math is not the study of numbers, but the relationships between them.
I'd say more modern math has replaced the word "numbers" with the more abstract concept of "objects". This makes math truly the study of abstraction.
I actually wish we taught more of this math early on[0]. Children seem to be quick to grasp many of the fundamentals of important structures like groups, fields, and algebras. I find that many of these concepts have fundamentally shifted how I think and can be used on a daily basis, without the need of writing formulas or using formal semantics.
It's odd that it takes getting up upper division undergraduate education in math (or sometimes from neighboring fields) to learn what the field is even fundamentally about. It's akin to teaching people that programming by teaching people how to use a word editor. It's such a narrow aspect and no surprise so many are so fundamentally confused.
[0] I'm unconvinced the "new maths" programs were a complete failure. Just because we didn't get it right on the first attempt doesn't mean we should have thrown the baby out with the bath water.
Just to clarify, are you saying that you recommend that writeup over the lecture, or just linking the writeup for people who'd prefer it over watching a video?
I'm just recommending the writeup, but only because I haven't watched the lecture series myself (although I'm sure it's good, I've seen other lectures by the lecturer that were excellent). As far as I know, they cover basically the same material.
> F* is a programming language with proof support. Lean/Coq are theorem providers that can be used to model and generate code.
Lean is also a programming language with proof support. It is very much in the same category as F* in this regard, and not in the same category as Coq (Rocq).
In Rocq/Coq, you have "extraction", which is the standard way to compile programs. This is how the C compiler CompCert is executed, for example. So, all of these languages are in the same category in this respect.
> do note that youtube is heavily censoring low carb stuff since "it's not mainstream approved" lol
By "not mainstream approved" you mean it's largely discredited and confined to quacks and charlatans online. Outside of its one legitimate use—very specific cases of epilepsy—no serious medical organisation endorses keto for the general population or cancer patients.
The third video you link is of a person who thinks that they cured their cancer with, among other things, juicing, breathwork, "positive mindset", and keto. This is nonsense.
> despite people healing conditions on it that no modern medicine could
If it worked, it would become "modern medicine". The reason it's not accepted in the mainstream is that it has failed every basic test of efficacy. The reason that you will find it promoted primarily on youtube and not in major medical journals is that the youtube audience is less well-equipped to spot it as snake-oil.
“no serious medical organisation endorses keto for the general population or cancer patients” - isn’t having it be effective for the obese and diabetics enough?
as to using “medical organizations” endorsement as a sign of “truth” - it took over 10 years to go from the discovery that H Pylori caused stomach ulcers to GI medical organizations recommending antibiotic treatment, such endorsement is a lagging indicator. Or to take another example, almost every american medical organization supports widespread use of “gender-affirming care” for children, including hormonal treatment and surgery, while many european medical organizations have pulled back from their earlier enthusiastic support based on increasing data on harm. So are the european organizations correct, or are the american ones? or is human biology significantly different between europe and the united states?
or to take another recent example, were the medical organizations correct when they endorsed the CDC view that “masks didn’t work” (because the cdc wanted to ensure mask supply for medical personnel), or were they correct when they then said they were effective…. until later research showed they made no discernible difference?
There are studies, but very limited of course that show efficacy with the things you mentioned though. There's limited interest in it though because most of those things simply have no profit potential.
No there are not. There are studies in mice (like this one), studies in vitro, etc.
> There's limited interest in it though because most of those things simply have no profit potential
This is not true. There is a lot of interest in the Keto diet, it has been well-studied and has uses in treating epilepsy. The reason it's not prescribed more generally is because of those studies, which show it doesn't work. Not everything is a conspiracy.
It’s not accurate to call keto well studied wrt cancer or that it doesn’t work. It’s an active area of research and there are many studies showing positive effects, but most/all study designs are limited. It’s also true that without a clear path to making a drug, big expensive studies like large scale human trials are not likely to be funded.
Additionally, any result suggesting a new approach has profit potential. If fasting was effective then a pill giving the same benefits would have a big market.
Sort of, the time restricted eating the article is about would require something different, like a pill that stops your body from absorbing some nutrients for 12 hours or something like that.
>There's limited interest in it though because most of those things simply have no profit potential.
A cancer researcher could rely on charities, academic institutions, and government grants to fund experiments. There is a lot of cash available to cancer research. If the researcher shows a cheap and effective method to combat even a specific type of cancer, that researcher will get tenure, book deals, and fame. So that's a rich researcher.
Big pharma can be a cutthroat industry that prioritizes profit over public health. But they're not a shadowy cabal behind every bad thing in the world.
>> If it worked, it would become "modern medicine".
This is why you fail to get it: if you ever read the cases of people being harmed by their doctors advice and getting healed by going opposite to their doctors advice you would never have said such a thing.
Modern medicine is NOT patient focused: it's pharma focused. Look up statin marketing budgets.
And who do you think sponsors most of those "medicine journal" studies?
>> no serious medical organisation endorses keto for the general population or cancer patients.
Which further proves my point: if thousands of people healed their diseases which the "modern medicine" completely fails to heal using the keto diet and if, by your own admission, modern medicine disregards keto as uselss, what does this tell you about modern medicine other than that it's completely backwards?
> if you ever read the cases of people being harmed by their doctors advice and getting healed by going opposite to their doctors advice you would never have said such a thing.
There are countless cases of shoddy care from doctors. The existence of crappy doctors does not mean keto is effective.
> Modern medicine is NOT patient focused: it's pharma focused.
Again, the existence of bad incentives in medicine/corruption is not evidence of keto working.
> And who do you think sponsors most of those "medicine journal" studies?
There are serious, good-faith criticisms of modern medicine to be made. Blindly saying it's all nonsense, and instead you should do a juice cleanse with keto instead of chemo, is not a serious good-faith criticism.
> if thousands of people healed their diseases which the "modern medicine" completely fails to heal using the keto diet
This has not happened. Keto has not healed thousands of peoples' cancer. There is no evidence (and I mean real evidence, not a youtube video or podcast recounting an anecdote) of keto being effective at curing cancer.
some cancer. We already know different cancers use different 'fuel'. A keto diet would likely speed growth of cancers that can use or prefer ketones for instance. But for ones that only absorb glucose, the rats in the article indicate a maybe.
[The original paper which introduced Monads to Haskell](https://www.microsoft.com/en-us/research/wp-content/uploads/...) is a fantastic read, and extremely easy to understand. It explains clearly why monads are a good option, and what problem they're meant to solve in Haskell.
In the article itself, the line:
> As it happens the computation will need the value of b before that of a. If this is a problem, we can write the definition of root1 as
Is actually quite interesting: the problem being described there is almost identical to one of the problems that Haskell had with I/O, which motivated the introduction of monads.
> There are question begging, conclusion jumping and tenuous leaps of logic in the blog.
Point out a single specific example of any of those things in the article, please.
> Does GRRM truly encourage this view? The articles vaguely allude, never establish
The article literally quotes GRRM multiple times with regards to his claims about the historical accuracy of the books. As I said in another comment, this is the second sentence:
> George R.R. Martin’s claim that the Dothraki are “an amalgam of a number of steppe and plains cultures”
And he has made specific claims about the nature and prevalence of sexual violence in medieval Europe (that have been widely rebuked by historians), in defence of the sexual violence in his books. This is also in the article:
> he has stated this outright as a defense of his work that this is how it ‘really was’
The article is the opposite of "vague".
> What does it mean to say the story is "realistic"? What are they referring to? Historical accuracy, or the rejection of romantic narrative idealism, or something else?
It's pretty clear that he's referring to historical accuracy. (although he does in other articles talk a lot about how internal inconsistencies in the world of GoT, which is maybe something different).
> When GRRM says the Dothraki is an amalgamation of various cultures, what, specifically, is he talking about?
Uh, their culture? Which includes dress, food, societal structure, etc. Each of the articles deals with a different aspect of the culture. Are you really trying to argue that the definition of the word "culture" is in contention here?
> the assumptions are invariably interpreted in ways that are least charitable to GRRM and the story.
You'd have a better time reading and understanding literary criticism like this if you stopped thinking about it like the author vs the critics. This series of articles increased my enjoyment of game of thrones: it's really cool to learn about battle tactics and history and real cultures, and it's fun to argue about the show.
> Yes, author tells us why he believes it is a very serious problem that people think the show is historically accurate because... the Dothraki are a demeaning stereotype of the armies of Ghenghis Khan.
Talk about interpreting something uncharitably! That is not actually the reason the author gives for criticising the work. If you read the article again you'll find his actual reason.
The article clearly motivates the criticism, and explains why it's valid to critique the books from a historical perspective.
* GRRM has made claims regarding the relation of the Dothraki to real-life cultures. It's in the second sentence:
> George R.R. Martin’s claim that the Dothraki are “an amalgam of a number of steppe and plains cultures”
* In interviews and writing outside of the books GRRM has made a number of claims about the reality of life in medieval Europe. He in particular made claims about the prevalence and nature of sexual violence (as a defence for the content of his books) which were roundly rebuked by historians. In the article:
> he has stated this outright as a defense of his work that this is how it ‘really was’
* Finally Game of Thrones is probably the most important and influential piece of modern media depicting something like medieval Europe. Though it is fiction, it undeniably has a massive impact on people's perception of the time period, and for a lot of people their perception of "what the middle ages were like" will be shaped in part by Game of Thrones. So it's worth criticising for that reason.
As an aside, I find it weird when people object to the very idea of critiquing these components of a piece of media. When this blog had posts about the armour in game of thrones I found it informative and tonnes of fun: I got to learn a little about battle tactics, got to see where the show's designers took their inspiration, and got to notice funny things like how Jamie Lannister is clearly wearing a biker jacket with some paint on it for much of the 5th season. One of the best things about the show (and books) is meant to be how they're grounded and seem "real", despite the dragons and whatnot. Pointing out bits that don't make sense is good, especially when those bits can actually perpetrate harmful misconceptions more generally.
You make very good points except your first sentence of your last paragraph. GoT is clearly a work of fiction and while the author made claims about it being rooted in reality, I don’t find the idea that we shouldn’t hold fiction to the same standard as non-fiction when it comes to historical accuracy all that crazy. After all, Star Wars is supposed to be ancient history, yet we don’t criticize it for historical inaccuracies. I think a much better ruler to apply here is whether the fictional account is believable or indeed possible with constraints of physics and sociology. I argue that believable storytelling is better for fiction than historical accuracy.
But, as the author of this article noted before, we don't live in a world shaped by ancient star battling empires. We currently live in a world shaped by our history, and continue to shape our world based on how we understand ourselves and our past. If we distill our past into stereotypes we will forget where we come from and make decisions based off of inaccurate assumptions.
If we see the Native Americans as murdering rapists, how likely are we to give them restitution for the massacres we've inflicted upon them, or begin to provide them social support? And if you don't currently see them as such, how will fiction that impresses on the greater public of its veracity that it isn't so, and that the general impression of their culture is completely fabricated?
Fiction definitely shapes our society and our understanding, and if fiction as popular as this one claims to be realistic there is a responsibility to either confirm or counter it. Yes, storytelling is more important than accuracy, but when you claim the latter you had better prove it.
If the 19th century Native Americans were a bit rapey or murdery by modern standards, that shouldn't affect how we treat their descendants today.
This argument is bad because it means well-meaning historians feel they need to whitewash the history of Indian tribes as noble savages, just to get the reaction they want today.
> After all, Star Wars is supposed to be ancient history
Star Wars is "supposed" to be ancient history within the fiction of its own story. George Lucas doesn't think it actually is ancient history.
Contrast this with George Martin's assertion that the Dothraki are "an amalgam of steppe and plains cultures [...] seasoned with a dash of pure fantasy" (or that the sexual violence in his books mirrors that of the real medieval history). This is an "out of fictional universe" argument, different from Star War's fictional conceit that it takes place "a long time ago, in a galaxy far, far away".
I never said we should hold fiction to the same standards as non-fiction, that's obviously silly. I said that critiquing works of fiction like GoT from a historial perspective is fun, interesting, educational, and positive.
Star Wars is quite a clever setting because it's both vague and incredibly distant, which allows the film makers huge latitude to include tropes from cowboy, ronin, WW2 films etc without the worry of historical inaccuracy.
> extremely elastic view of “like medieval Europe”.
No. Westeros is based on medieval Europe, culturally, politically, and historically. Obviously it's fiction, well done on spotting that, but it's a fictionalised version of medieval Europe.
> Undeniably? Based on...what evidence?
I'm sorry, do I have to provide you with evidence that media impacts people's perception of things?
Inspired rather loosely by remixing elements of that with other historical sources (e.g., Palestine—modern Palestine, specifically, IIRC—is explicitly identified by GRRM as part of the inspiration for Dorne.) Then leavened with a hefty dose of fantasy (part of the “realism” reputation the series has is that the fantasy elements aren’t bolt-ons that don’t fundamentally effect the rest of the setting.)
> I’m sorry, do I have to provide you with evidence that media impacts people’s perception of things?
There’s a pretty big difference between these claims:
(1) media impacts people’s perception of things
vs.
(2) AGoT undeniably has a massive impact on people’s perception of medieval Europe
Game of Thrones is medieval fantasy, and as the second-biggest medieval fantasy series of all time it will have a significant impact on people's perception of the medieval time period.
I think that claim is pretty uncontroversial, which is why I didn't provide "evidence" for it, and also I get the sense that I'd be wasting my time in arguing with you about it when you throw out silly pedantries like "oh well dorne is based on palestine".
> Game of Thrones is medieval fantasy, and as the second-biggest medieval fantasy series of all time it will have a significant impact on people's perception of the medieval time period.
I'm sure that, of relatively modern fantasy series, it will have one of the largest impacts while it remains popular. What I don't see is evidence that it (or even the #1 modern medieval fantasy series) has much impact (I would accept, without specific evidence, that it has non-zero impact) on perceptions of the medieval period on an absolute scale, rather than relative to other modern overtly fantastic literature not specifically tied to history which also may not have much absolute impact.
Now, clearly fantasy has some impact; things like post-medieval Arthurian stories have been a vehicle for transmitting a lot of misconceptions about the medieval period. But those presented themselves as history and tied to specific times and places in history, they weren’t overt fantasy set in an obviously-invented setting that was merely inspired by a mix of history and historical mythology.
It is useful for understanding laziness and some interesting theoretical tools for traversing data structures, though. For a more in-depth look at the idea of circular programs for traversal, Bird's paper (linked in the post, https://link.springer.com/article/10.1007/BF00264249) is a good start.