Skip to content

Instantly share code, notes, and snippets.

@runjak
Created December 21, 2015 17:06
Show Gist options
  • Save runjak/19e37fec2b475aa6eac8 to your computer and use it in GitHub Desktop.
Save runjak/19e37fec2b475aa6eac8 to your computer and use it in GitHub Desktop.
HIM - Join Me In Death
module Main where
{-| HIM - Join Me In Death |-}
txt = [ "Baby join me in death"
, "Won't you die"
, "this life ain't worth living"
, "We are so young"
, "our lives have just begun"
, "but already we are considering"
, "escape from this world", ""
, "and we've waited for so long"
, "for this moment to come"
, "we're so anxious to be together"
, "together in death"
, "This world is a cruel place"
, "and we're here only to lose"
, "so before life tears us apart let"
, "death bless me with you"]
chorus w = lines . unlines . zipWith (\x y -> x++"\n"++y) (take 3 $ cycle [w++" tonight for love", w])
bridge x y = [x, (take 9 x)++" it"++(drop 9 x)]
++ (concat $ replicate 2 $ (replicate 2 $ take 7 $ drop 5 y)++[x])
lyrics = let (nl,js) = ([""],cycle [txt!!0])
in concat [ take 3 js, nl
, take 9 $ drop 3 txt, nl, chorus (txt!!1) js, nl
, drop 12 txt, nl, take 5 $ chorus (txt!!1) js
, [("And j"++) $ drop 6 $ head $ tail $ chorus (txt!!1) js]
, [("J"++) $ drop 6 $ head $ tail $ chorus (txt!!1) js]
, nl, bridge (txt!!2) (txt!!0), nl, chorus (txt!!1) js, nl
, [head $ tail $ chorus (txt!!1) js]
]
main = mapM_ putStrLn lyrics
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment