Это паттерн охраны [Haskell-wiki] .Начиная с Haskell'10 охранник - это список квалификаторов.Спецификатор может быть условием (как в старых гвардейцах), и шаблон гвардейцев .
Таким образом, Haskell (лениво) оценит выражение на правой стороне стрелки <-
ицель, чтобы соответствовать этому с образцом слева от стрелки.Если это удастся, то охранник (хорошо, что часть охранника) успешен.Если все части охраны успешны, то правило «срабатывает».
В этом конкретном случае единственная часть паттерна, которая может потерпеть неудачу, - это тот факт, что третий элемент 3-го кортежа - это не a CmmForeignCall
конструктор данных.Кроме того, используя этот шаблон защиты, мы, конечно, можем использовать entry
, middle
в теле выражения.