The Name Game: Difference between revisions

add Haskell source
(add Haskell source)
Line 242:
Fee-fi-mo-ilton
Milton!
 
Steve, Steve, bo-bteve
Banana-fana fo-fteve
Fee-fi-mo-mteve
Steve!
</pre>
 
=={{header|Haskell}}==
<lang Haskell>
-- The Name Game, Ethan Riley, 22nd May 2018
import Data.Char
 
isVowel :: Char -> Bool
isVowel c
| char == 'A' = True
| char == 'E' = True
| char == 'I' = True
| char == 'O' = True
| char == 'U' = True
| otherwise = False
where char = toUpper c
 
shorten :: String -> String
shorten name
| isVowel $ head name = map toLower name
| otherwise = map toLower $ tail name
 
theNameGame :: String -> String
theNameGame name =
name ++ ", " ++ name ++ ", bo-b" ++ shorten name ++ "\n" ++
"Banana-fana fo-f" ++ shorten name ++ "\n" ++
"Fee-fi-mo-m" ++ shorten name ++ "\n" ++
name ++ "!\n"
main = do
mapM_ (putStrLn . theNameGame) ["Gary", "Earl", "Billy", "Felix", "Mike", "Steve"]
</lang>
{{out}}
<pre>
Gary, Gary, bo-bary
Banana-fana fo-fary
Fee-fi-mo-mary
Gary!
 
Earl, Earl, bo-bearl
Banana-fana fo-fearl
Fee-fi-mo-mearl
Earl!
 
Billy, Billy, bo-billy
Banana-fana fo-filly
Fee-fi-mo-milly
Billy!
 
Felix, Felix, bo-belix
Banana-fana fo-felix
Fee-fi-mo-melix
Felix!
 
Mike, Mike, bo-bike
Banana-fana fo-fike
Fee-fi-mo-mike
Mike!
 
Steve, Steve, bo-bteve
Anonymous user