http://projecteuler.net/index.php?section=problems&id=151

はじめは変数名ミスでループに陥っていた。

main = print.expect$(1,1,1,1)
expect (,,,1) = 
expect (,,1,) = 1
expect (,1,,) = expect(,,1,1) + 1
expect (1,,,) = expect(,1,1,1) + 1
expect (x,y,z,w) = (x*select2 + y*select3 + z*select4 + w*select5)/(x+y+z+w)
where select2 | x >  = expect (x-1,y+1,z+1,w+1)
| otherwise = 
select3 | y >  = expect(x,y-1,z+1,w+1)
| otherwise = 
select4 | z >  = expect(x,y,z-1,w+1)
| otherwise = 
select5 | w >  = expect(x,y,z,w-1)
| otherwise = 

指数だとかいう話もあるが高々16か15なので、気にしないことにした。