Bob

Bob

简单

简介

鲍勃是个无精打采的少年。 他喜欢觉得自己很酷。 而且他绝对不会为什么事情兴奋起来。 那样就不酷了。

人们跟他说话时,他的回答相当有限。

说明

你的任务是判断当有人对 Bob 说话,或者问他问题时,Bob 会回答什么。

Bob 只会给出五种回答之一:

  • "Sure." 如果你问他一个问题,比如 "How are you?",他就会这样回答。 问题遵循的约定是:以问号结尾。
  • "Whoa, chill out!" 如果你冲他大喊,他就会这样回答。 大喊遵循的约定是:全部使用大写字母。
  • "Calm down, I know what I'm doing!" 如果你冲他大喊着提出问题,他就会这样说。
  • "Fine. Be that way!" 这是他对沉默的回应。 沉默的约定是什么都不说,或者使用各种空白字符的组合。
  • "Whatever." 这是他对其余任何情况的回答。

提示

你需要实现responseFor函数,它根据给定的输入返回 Bob 的回应。如果不确定类型,可以参考给出的签名,但不要让它限制你的创造力:

responseFor :: String -> String

要解决这个练习,你可以先了解:

本练习处理文本数据。由于历史原因,Haskell 的String类型等同于[Char],也就是一个字符数组。为了更高效地处理文本数据,可以使用Text类型。

作为本练习的可选扩展,你可以

  • 阅读 Haskell 中关于字符串类型的内容。

  • 在 package.yaml 的依赖列表中添加- text。

  • 按以下方式导入Data.Text:

    import qualified Data.Text as T
    import           Data.Text (Text)
    
  • 现在你可以写responseFor :: Text -> Text这样的代码,也可以用T.isSuffixOf这样的方式引用Data.Text的组合子。

  • 查阅Data.Text的文档,

  • 然后你可以在 Bob.hs 中把所有出现的String替换为Text:

    responseFor :: Text -> Text
    

这部分完全可选。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Haskell Exercism

准备好开始 Bob 了吗?

注册 Exercism,借助 107 个练习 和真人导师指导,学习并掌握 Haskell,全部免费。