Bob

Bob

Fácil

Introducción

Bob es un adolescente despreocupado. Le gusta pensar que es muy cool. Y definitivamente no se emociona con nada. Eso no sería cool.

Cuando la gente le habla, sus respuestas son bastante limitadas.

Instrucciones

Tu tarea es determinar qué le responderá Bob a alguien cuando le dice algo o le hace una pregunta.

Bob siempre responde solo una de cinco cosas:

  • «Sure.» Esta es su respuesta si le haces una pregunta, como «How are you?». La convención para las preguntas es que terminan con un signo de interrogación.
  • «Whoa, chill out!» Esta es su respuesta si le GRITAS. La convención para los gritos es escribir TODO EN MAYÚSCULAS.
  • «Calm down, I know what I'm doing!» Esto es lo que dice si le gritas una pregunta.
  • «Fine. Be that way!» Así responde al silencio. La convención para el silencio es nada, o varias combinaciones de espacios en blanco.
  • «Whatever.» Esto es lo que responde a cualquier otra cosa.

Pistas

Necesitas implementar la función responseFor que devuelve la respuesta de Bob para un argumento dado. Puedes usar la firma proporcionada si tienes dudas sobre los tipos, pero no dejes que restrinja tu creatividad:

responseFor :: String -> String

Para resolver este ejercicio, puedes leer sobre:

Este ejercicio trabaja con datos textuales. Por razones históricas, el tipo String de Haskell es sinónimo de [Char], una lista de caracteres. Para un manejo más eficiente de datos textuales, se puede usar el tipo Text.

Como una extensión opcional de este ejercicio, puedes

  • Leer sobre los tipos de string en Haskell.

  • Agregar - text a tu lista de dependencias en package.yaml.

  • Importar Data.Text de la siguiente manera:

    import qualified Data.Text as T
    import           Data.Text (Text)
    
  • Ahora puedes escribir, por ejemplo, responseFor :: Text -> Text y referirte a los combinadores de Data.Text como, por ejemplo, T.isSuffixOf.

  • Consulta la documentación de Data.Text,

  • Luego puedes reemplazar todas las apariciones de String con Text en Bob.hs:

    responseFor :: Text -> Text
    

Esta parte es totalmente opcional.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Haskell Exercism

¿Todo listo para empezar Bob?

Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.