Racket: Case

Вместо switch в Racket ипользуется case. В общем случае case по своим возможностям шире, чем switch в большинстве языков программирования. Его использование в качестве switch — это наиболее простой способ познакомиться с ним.

(let ([v 0])
  (case v
    [(0) "zero"]
    [(1) "one"]
    [(2) "two"]
    [(3 4 5) "many"]))
; "zero"

Каждая ветка в case описывается квадратными скобками, где в левой части — список из одного или нескольких элементов. Эти элементы и есть ожидаемые значения. В правой части ветки находится возвращаемое значение.

Для поведения по умолчанию в самом конце используется часть else:

(case 6
  [(0) "zero"]
  [(1) "one"]
  [(2) "two"]
  [else "many"])
; "many"

Задание

Реализуйте функцию humanize-permission, которая принимает на вход символьное обозначение прав доступа в Unix-системах и возвращает текстовое описание.

(humanize-permission "x") ; "execute"
(humanize-permission "r") ; "read"
(humanize-permission "w") ; "write"

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются