Конкретный паттерн
case f foo of
Just bla -> case g bla of
Just muh -> h muh
Nothing -> Nothing
характерен для монады Maybe
.Этот экземпляр определен как
instance Monad Maybe where
return = Just
Nothing >>= _ = Nothing
Just x >>= f = f x
Таким образом, вы можете переписать приведенную выше конструкцию case
в
f foo >>= \bla -> g bla >>= \muh -> h muh
, которую можно сделать более читабельной, используя синтаксис do
do
bla <- f foo
muh <- g bla
h muh
или eta-Reduction и оператор композиции Клейсли
(f >=> g >=> h) foo
В вашем примере последнее фактически невозможно, поскольку самая внутренняя функция не использует sheets
но sheetProperties
еще раз, но обозначение do
все еще можно использовать.