# Talk:Correctness of short cut fusion

From HaskellWiki

Revision as of 12:18, 13 February 2007 by Twanvl (talk | contribs) (Comments on unfoldr/destroy fusion without seq)

If unfoldr would use a lazy pattern match:

```
unfoldr :: (b -> Maybe (a,b)) -> b -> [a]
unfoldr p e = case p e of Nothing -> []
Just ~(x,e') -> x:unfoldr p e'
```

the left hand side of the example without seq will be the same as the right hand side:

```
destroy g (unfoldr p e) = g step (unfoldr p e)
= case step (unfoldr p e) of Just z -> 0
= case step (case p e of Nothing -> []
Just ~(x,e') -> x:unfoldr p e') of Just z -> 0
= case step (case Just undefined of Nothing -> []
Just ~(x,e') -> x:unfoldr p e') of Just z -> 0
= case step (undefined:unfoldr p undefined) of Just z -> 0
= case Just (undefined,unfoldr p undefined) of Just z -> 0
= 0
```

--Twanvl 12:18, 13 February 2007 (UTC)