come on now, have you ever fallen in love with a phillips head screwdriver?
module Comment where
import Control.Exception (assert)
class Loveable thing where
loves :: Person -> thing -> Bool
instance Loveable ScrewDriver where
_ `loves` PhillipsHead = False
instance Loveable ProgrammingLanguage where
Me `loves` Haskell = True
TheOtherGuy `loves` Haskell = True
_ `loves` _ = False
data ScrewDriver = FlatHead | PhillipsHead | Torx
data ProgrammingLanguage = Haskell | Lisp | Scheme
data Person = You | Me | TheOtherGuy
implies a b = if a then assert True b else assert True True
argument person = (not (person `loves` PhillipsHead)) `implies` (not (person `loves` Haskell))
check a = mapM (print . a) [You, Me, TheOtherGuy]
Comment> check argument
True
False
FalseBut no, programming languages must be like screwdrivers. You just mindlessly turn them clockwise all day and you've created Google. Right?
It all depends on if the goal is to make as much money as fast as possible or to have fun and satisfy yourself intellectually.
There's nothing wrong with loving programming language X, but I wouldn't make career or project decisions based on enjoying the syntax of one vs the other.
imho the difficult part is figuring out the logic of the program, determining which libraries to commit to, writing any novel algorithms and engineering the system so it runs efficiently and doesn't fall over.