Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package logikujo.atuin.FunctionalSamples
- import scalaz._
- import Scalaz._
- import scalaz.effects._
- object App {
- def main(args: Array[String]):Unit = Palindrome.run
- }
- object Palindrome {
- def run:Unit = loop().unsafePerformIO
- def loop(a:Unit):IO[Unit] =
- showBanner >>=| readLn >>= palindrome >>= showResult >>= loop
- def showBanner:IO[Unit] = for {
- _ <- putStrLn("Little example to test if a line is a palindrome:")
- _ <- putStrLn("Enter a line:?")
- } yield ()
- def palindrome(s:String):IO[Option[Boolean]] =
- io{(s != "quit") option ((s.reverse == s) ?? true)}
- def showResult(o:Option[Boolean]):IO[Unit] =
- o.some(_ ? (putStrLn("Is a palindrome!")) |
- (putStrLn("Is NOT a palindrome :(, try it again!"))).none(io{System.exit(0)})
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement