re: Daily Challenge #110 - Love VS. Friendship VIEW POST

FULL DISCUSSION
 

Haskell

import Data.Char (ord)

wordsToMarks :: String -> Int
wordsToMarks = sum . map ((flip (-) 96) . ord)

Playground

Here.

 

The prelude defines subtract, so you don't need flip here:

wordsToMarks = sum . map (subtract 96 . ord)

Another relatively common workaround is to use a right-section that adds a negative number, i.e.

wordsToMarks = sum . map ((+(-96)) . ord)
 

Thanks for your insight. I didn't know about subtract and when the second solution is kind of obscure to me it seems very cool and short.

Since - is both subtraction and unary minus one can’t use a right-section like (-1), but considering that subtracting is the same as adding a negative number the slightly obscure form makes sense. I’d still use subtract though.

code of conduct - report abuse