Какова область действия предложения where при работе с охранниками в Haskell?

Я знаю, что они не сохраняются при совпадении с шаблоном (т. е. вам нужно переписать предложение «где» для каждого шаблона), но как работает область видимости для охранников?

напр. Это работает?

myFunction x1 x2
    | x1 > x2 = addOne x1
    | x1 < x2 = addOne x2
    | otherwise = x1
        where addOne = (1+)

Или это должно быть так?

myFunction x1 x2
    | x1 > x2 = addOne x1
        where addOne = (1+)
    | x1 < x2 = addOne x2
        where addOne = (1+)
    | otherwise = x1
16
задан danieltahara 15 March 2012 в 14:03
поделиться