The 'just move' argument doesn't work. People want to live here and improve the country at the same time. Likewise, someone may say to someone who advocates for higher taxes 'waive you citizenship and move to Sweden,' which is equally unfair
272 karma · joined October 22, 2019
Speaking purely in terms of money: yes, doubling the productivity of those working for you is better than doubling your own productivity. But many of us don't have that option. If you are a normal employee, increasing your productivity is one of the few ways to increase your earnings.
But why not argue the following instead: Most productive things we do are for someone else's benefit, so let's try to fill our time with more things that our productive to ourselves. Would you agree with this take?
fun addRefs(
a : forall<h> ref<h,int>,
b : forall<h> ref<h,int>
) : total ()
{
a := 10;
b := 20;
return (!a + !b);
}
Why is it total instead of st<h>? Won't this have a side effect of setting the references? Prelude> import Data.Function (on)
Prelude Data.Function> :t on
on :: (b -> b -> c) -> (a -> b) -> a -> a -> c
Prelude Data.Function> f = undefined :: Int -> [Int]
Prelude Data.Function> g = undefined :: Int -> [Int]
Prelude Data.Function> :t ((&&) `on` (not . null . ($ x))) f g
((&&) `on` (not . null . ($ x))) f g :: Bool
Alternatively in Control.Arrow there's a 'fanout' operator &&&: Prelude Control.Arrow> f = undefined :: Int -> Bool
Prelude Control.Arrow> g = undefined :: Int -> Bool
Prelude Control.Arrow> :t uncurry (&&) . (f &&& g)
uncurry (&&) . (f &&& g) :: Int -> Bool
Of course it's still probably simpler to just write it out in this case.