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

برای حل این تمرین می‌توانید درباره‌ی این مورد مطالعه کنید:

این تمرین با داده‌های متنی کار می‌کند. به دلایل تاریخی، نوع String در Haskell با [Char]، یعنی لیستی از کاراکترها، هم‌معنی است. برای پردازش کارآمدتر داده‌های متنی، می‌توان از نوع Text استفاده کرد.

به‌عنوان یک افزونه‌ی اختیاری برای این تمرین، می‌توانید:

  • درباره‌ی «نوع‌های رشته» در Haskell بخوانید.

  • - text را به فهرست وابستگی‌های خودتان در package.yaml اضافه کنید.

  • Data.Text را به روش زیر وارد کنید:

    import qualified Data.Text as T
    import           Data.Text (Text)
    
  • اکنون می‌توانید مثلاً responseFor :: Text -> Text بنویسید و به ترکیب‌کننده‌های Data.Text مثلاً با T.isSuffixOf ارجاع دهید.

  • مستندات Data.Text را ببینید،

  • سپس می‌توانید همه‌ی موارد String را در Bob.hs با Text جایگزین کنید:

    responseFor :: Text -> Text
    

این بخش کاملاً اختیاری است.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Haskell Exercism

آماده‌اید Bob را شروع کنید؟

در Exercism ثبت‌نام کنید تا Haskell را همراه با 107 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.