Начиная с GHC 7.6.1 существует расширение под названием MultiWayIf
, которое позволяет написать следующее:
\k -> if
| k < 0 -> "negative"
| k == 0 -> "zero"
| otherwise -> "positive"
На которое, по меньшей мере, приятнее смотретьчем альтернатива, использующая case
.
Для сопоставления с образцом существует соответствующее расширение, называемое LambdaCase
:
\case
"negative" -> -1
"zero" -> 0
"positive" -> 1
_ -> error "invalid sign"
Эти расширения, однако, не являются частью стандартного Haskell, инеобходимо включить явно с помощью прагмы {-# LANGUAGE LambdaCase #-}
или {-# LANGUAGE MultiWayIf #-}
в верхней части файла или путем компиляции с флагом -XLambdaCase
или -XMultiWayIf
.