Haskellのラムダ式のパターンマッチに関する質問です。
Haskellを勉強して1週間ほどなので、馬鹿らしい質問かもしれませんがあらかじめ御了承ください。
Haskellの勉強中にふとラムダ式でパターンは使えるのかと思い、下のような関数を作りました
pow :: Num a => a -> Integer -> a
pow x = do
\0 -> 1
\1 -> x
\2 -> x * x
\n ->
if even n then pow (pow x 2) (n `div` 2)
else x * pow (pow x 2) ((n - 1) `div` 2)
しかし、これを実行するとコンパイルは通るのですが、無限ループになってしまっているようなのです。
なぜ、無限ループの陥ってしまうのかを教えていただきたいです。
開発環境はOS:Windows 10、コンパイラ:ghc 8.6.3です。