Gender roles aren't so cut and dry any more. Given that, maybe outcomes should be considered independent of gender?
115 karma · joined June 26, 2011
Gender roles aren't so cut and dry any more. Given that, maybe outcomes should be considered independent of gender?
-- Lifts a list into Amb.
amb :: [a] -> Amb a
If we assume Amb is just List, then: amb = id
If we write the example in the original article in desugared style, we get: amb [1, 2, 3] >>= \x ->
amb [4, 5, 6] >>= \y ->
if x * y /= 8 then amb [] else pure () >>
pure (x, y)
(we are forced to use an awkward condition with `pure ()` on the else branch when calling `amb` because Haskell requires us to return values on all branches. We can rewrite it equivalently in terms of `when` to hide that detail: amb [1, 2, 3] >>= \x ->
amb [4, 5, 6] >>= \y ->
when (x * y /= 8) (amb []) >>
pure (x, y)
It now looks more similar to the original example.)It ends up looking like continuation-passing style: conceptually, if we encounter `amb []` in the nested function, the nested computation ends and we start examining the next value in the list values being assigned to `x`: the implementation given in the original post does end up using callcc, so with some imagination you might be able to derive some kind of equivalence here :)
do x <- [1, 2, 3]
y <- [4, 5, 6]
if x * y == 8 then pure (x, y)
else []
which can be equivalently reworded as the list comprehension: [(x, y) | x <- [1, 2, 3], y <- [4, 5, 6], x * y == 8]
i.e., the underlying structure of amb without side-effects can also be understood as just a search of the input space for values that fulfill some criteria, rather than as backtracking via continuations.> The practice or policy of including people who might otherwise be excluded or marginalized, such as those who have physical or mental disabilities and members of minority groups.
2. Without an understanding of power, is there a useful definition of "inclusivity"?
Or is it just a whitewashed feelgood platitude that can't mean anything in the end, because if you include everyone, including people who are decidedly discriminating against you, that it constitutes some ideal of "inclusiveness"?
Ironically, aren't you "virtue signaling" right now about how you're sincere enough to be able to look down on people who do it?
Using a definition of inclusivity here without a consideration for power dynamics between the parties involved is totally uncharitable: as you've observed in your comment, there is no barrier to actually denying "exclusive rights" to activists, so it's more a matter of respect to the people who want to use the symbol (e.g. the pride flag, which few people have issues with it being used to exclusively represent LGBT groups) to make their cause more visible, rather than a lack of "inclusivity".
Because wage slavery exists and you can't shrug your shoulders and say "well, they're choosing to work for peanuts so it's fine!".
I don't think you can squarely point to the New Zealand–China FTA for whichever interpretation of colonization you'd like – immigration laws were mostly unchanged by the FTA with the exception of short term work visas, and property purchases by Chinese investors is not an exclusively "countries who have negotiated free trade agreements with China" phenomenon (see Vancouver in Canada, Seattle in the US).
It seems that it also extends to full expressions on the right-hand side of ::, so you can even do, for using Array operations over things that look like arrays but not quite:
document.querySelectorAll('p')::([].map)(f)
instead of: [].map.call(document.querySelectorAll('p'), f)
(replace [].map with Array.prototype.map if it feels less gross) int* arr[][10];
Spiral rule would state "arr is an array of pointers to arrays of 10 ints", where actually it would be "arr is an array of array of 10 pointers to int".Instead, when you write declarations, do it from right-to-left, e.g.:
char const* argv[];
"argv is an array of pointers to constant characters"It doesn't help with reading, unfortunately.
The Clojure solutions do sacrifice a lot of safety though, due to dynamic typing (e.g. the visitor pattern, which relies on basically strings to do its dispatching).