Haskell程序复制列表中的元素(对于k值,应重新计算k次)
我是哈斯克尔的新手。 例如Haskell程序复制列表中的元素(对于k值,应重新计算k次),haskell,Haskell,我是哈斯克尔的新手。 例如 [1],[2,2],[3,3,3]。像这样的东西怎么样 replicate' :: [Int] -> [[Int]] replicate' l = map (\n -> take n (repeat n)) l replicate' [1, 2, 3] -- [[1],[2,2],[3,3,3]] 像这样的怎么样 replicate' :: [Int] -> [[Int]] replicate' l = map (\n -> take n (
[1],[2,2],[3,3,3]。像这样的东西怎么样
replicate' :: [Int] -> [[Int]]
replicate' l = map (\n -> take n (repeat n)) l
replicate' [1, 2, 3] -- [[1],[2,2],[3,3,3]]
像这样的怎么样
replicate' :: [Int] -> [[Int]]
replicate' l = map (\n -> take n (repeat n)) l
replicate' [1, 2, 3] -- [[1],[2,2],[3,3,3]]
您可以通过写入以下内容来构造一个包含k乘以te项x的列表:
replicate k x
现在我们要将原始列表中的每个项目x映射到一个包含x,x次的列表。例如,我们可以将其写成:
replic the_list = map helper the_list
where helper x = replicate x x
或者使用lambda表达式:
或者我们可以使用以下功能:
import Control.Monad(join)
replic the_list = map (join replicate) the_list
我们也可以在这里使用eta简化:删除function子句头部和正文中的_列表:
import Control.Monad(join)
replic :: [Int] -> [[Int]]
replic = map (join replicate)
您可以通过写入以下内容来构造一个包含k乘以te项x的列表:
replicate k x
现在我们要将原始列表中的每个项目x映射到一个包含x,x次的列表。例如,我们可以将其写成:
replic the_list = map helper the_list
where helper x = replicate x x
或者使用lambda表达式:
或者我们可以使用以下功能:
import Control.Monad(join)
replic the_list = map (join replicate) the_list
我们也可以在这里使用eta简化:删除function子句头部和正文中的_列表:
import Control.Monad(join)
replic :: [Int] -> [[Int]]
replic = map (join replicate)