Haskell: Несколько операторов case в одной функции

Я хочу включить более одного оператора case в функцию Haskell (см. Ниже пример гипотетической функции).

Однако это не разрешено в Haskell. Как лучше сделать то же самое? Более того, если операторы case ничего не возвращают, а просто устанавливают какое-то значение, почему недопустимо иметь более одного оператора case в функции?

(Я бы получил «ошибку синтаксического анализа при вводе` case '»» в строке 5)

tester x y =  
   case (x < 0) of  
       True -> "less than zero."  
       False -> "greater than or equal to zero."  
   case (y == "foo")  
       True -> "the name is foo."  
       False -> "the name is not foo." 

Обратите внимание, что если бы моя функция была простой:

tester x y =  
   case (x < 0) of  
       True -> "less than zero."  
       False -> "greater than or equal to zero."

... тогда она бы компилировалась.

9
задан Matthias Braun 23 February 2018 в 13:45
поделиться