Show newer

My toxic is that I like the smell of cigarette smoke

I'm not sure how useful monads are in any context where a language doesn't provide syntactical sugar for the usage

The practical benefits of a monad are not distinguishable from this chaining from the point of view of someone using a library (unless you exposed the bind/return function to the user)

It can allow some elegant code reuse for implementers I suppose

But it's such a complicated concept for something that it is ultimately a tertiary tenet of functional programming

On the other hand I do like them because they are Cool and Interesting

@aescling I haven't found significant ones

There is an old stackexchange post expressing confusion at why clang used to allowed you to use the & operator on xvalues--this was identified as a bug in the discussion and is no longer in the compiler

I have found shells online which return prvalues in situations that should return xvalues, but I don't know what compilers they use

clodsfire boosted

@wallhackio burritos have culture where·as wraps are a symbol of white suburbia

It's really cool how easy it is to find c++ compilers that do not adhere to value category standards

monads

@vaporeon_ I forgot to mention that, to access the hastebin, you need to enter The Truth as a password (clodsireisawhale)

@coriander apparently Battlefield 1 has been unplayable on PS4 for weeks because the Servers are not doing their Server Things

re: unhinged baldur's gate 3 brainrot 

@Lady i mean, i consider any sexual activity fucking so that would count as fucking to me

re: unhinged baldur's gate 3 brainrot 

@Lady your choice. i would recommend fucking.

unhinged baldur's gate 3 brainrot 

which is the sexiest

@vaporeon_ Before the 2011 update to the C++ specification, lvalues and rvalues could have been thought of as "addressable expressions" and "temporary expressions", respectively. Any expression whose value was stored in an address in memory that was made available to the programmer was an lvalue ("addressable expressions") while expressions that cannot be accessible in subsequent lines of code (say, a + b = 3 in an if statement; the result of a + b can't be used again in any context other than the if statement) were referred to as rvalues ("temporary expressions").

Note that when we say that a value is addressable we mean that it is addressable from the programmer's point of view. Many rvalue expressions have results that must be stored somewhere (a function call which returns an object is an rvalue, for example) but if the programmer cannot access that address with the & operator then it is is not an lvalue in the pre-2011 C++ standard.

But the introduction of the rvalue reference cast in C++11, used to enable move semantics, created an expression that does not fit neatly into the old lvalue/rvalue dichotomy. Casting an object into an rvalue reference is a temporary value (if I don't store it in a variable the result of the cast won't be accessible in subsequent lines of code) but since it is a reference it is an explicit address in memory that is made available to the programmer. The C++ standards committee resolved this problem by introducing a third value category and changing the meaning of the word "rvalue":

  • most of what we used to call rvalues are now called "prvalues" ("pure rvalues"),
  • what we used to call lvalues are still called lvalues,
  • an rvalue reference cast expression is of a new value category called "xvalue", which is like a prvalue in that it is a temporary expression but it is also like an lvalue because it is essentially a memory address made available to the programmer,
  • rvalue is now an umbrella term; xvalues and prvalues are specific types of rvalues.

There also exists the less useful umbrella term glvalue, short for "general lvalue", which refers to either xvalues or lvalues. The new term xvalue was originally introduced without any meaning and has been retroactively defined in the standard as being short for "eXpiring value". I prefer to think of xvalue as being short for "cross value" since an xvalue contains a cross of some characteristics from lvalues and some characteristics from prvalues.

There are many details I'm leaving out, here is a "pastebin" containing additional notes I left out of what I wrote here: hastebin.com/share/feqoyilaqo.

@coriander not yet sure I forgive you for your Blighttown slander

Show older
📟🐱 GlitchCat

A small, community‐oriented Mastodon‐compatible Fediverse (GlitchSoc) instance managed as a joint venture between the cat and KIBI families.