# Talk:Data.Semigroup

From HaskellWiki

The page says `stimes` applies the binary operation `x` times, while in fact, the binary operation is applied `x-1` times to `x` elements in total. In the example `3 * 3 * 3 * 3`, `*` is applied three times (not four), to four elements. Here is what the page currently (Jan, 2020) says:

stimes :: Integral b => b -> a -> a

- Given a number
`x`

and a value of type`a`

, apply`<>`

to the value`x`

times.

stimes 4 (Product 3) -- with the type "Product a" "<>" becomes "*" -- returns: Product {getProduct = 81} -- This is because (3 <> 3 <> 3 <> 3) == (3 * 3 * 3 * 3) == 81 -- i.e. 3 multiplied by itself 4 times.