[Haskell Practice] List 10 x 10 results

無聊做的簡單練習,把目前想到的列在下面,以前 Su Horng 有列過,不過我也懶的找了。

其實這幾個都是大同小異,只是用不同的方式寫出來而己。

import Control.Applicative
import Control.Monad

sol = [x*y | x <- [1..10], y <- [1..10]]

sol1 = concat $ map (\x -> map x [1..10]) $ map (*) [1..10] 

sol2 = (*) <$> [1..10] <*> [1..10]  
-- sol2' = pure (*) <*> [1..10] <*> [1..10]
-- sol2'' = [(*)] <*> [1..10] <*> [1..10] 

sol3 = liftM2 (*) [1..10] [1..10]
-- sol3' = liftA2 (*) [1..10] [1..10]

sol4 = do x <- [1..10]
          y <- [1..10]
          return (x*y)
-- sol4' = [1..10] >>= \x -> [1..10] >>= \y -> return (x*y)

有想到再補上。這幾個的輸出結果都會是

Prelude Control.Applicative> pure (*) <*> [1..10] <*> [1..10]
[1,2,3,4,5,6,7,8,9,10,2,4,6,8,10,12,14,16,18,20,3,6,9,12,15,18,21,24,27,30,4,8,12,16,20,24,28,32,36,40,5,10,15,20,25,30,35,40,45,50,6,12,18,24,30,36,42,48,54,60,7,14,21,28,35,42,49,56,63,70,8,16,24,32,40,48,56,64,72,80,9,18,27,36,45,54,63,72,81,90,10,20,30,40,50,60,70,80,90,100]

Comments

Comments powered by Disqus