Help for this page
A basic technique is to use newtype declarations to declare separate
types for separate intents.
append (AnnotatedString x) (AnnotatedString y)
= AnnotatedString (x ++ y)
If x and y have the same safety level,
then (x ++ y) has again that same safety level.
type family Join a b
type instance Join Safe Safe = Safe
type instance Join Safe Unsafe = Unsafe
type instance Join Unsafe Safe = Unsafe
type instance Join Unsafe Unsafe = Unsafe
:: AnnotatedString a
-> AnnotatedString b
-> AnnotatedString (Join a b)
(x ++ y) is at least as safe as the least safe of x and y.
The moon would crash into the Earth
The moon would breakup at the Roche limit
The wire would turn the Earth into a giant electromagnet
The Earth would turn into a giant yo-yo.
The moon would orbit every ~24 hours, significantly changing the lunar calendar
The centripetal force would rip out the Earth's core
All man-made satellites would be destroyed, causing great havoc
Moon landings would become significantly easier
The rope or wire would break, no matter how strong it was
The Vulcans would show up for First Contact causing yet another revision to the timeline
The Galactic Police would snip the rope and put the Earth on probation
Some idiot would get terrible, terrible, rope burn
We finally get those golf balls back
Results (693 votes),