您可以自己定义(作为玩具示例)
(*) :: [a] -> Int -> [a]
(*) xs n = take n $ cycle xs
这样你就可以拥有
Prelude> [0]*5
[0,0,0,0,0]
Prelude> [0,1]*5
[0,1,0,1,0]
显然,通过重新定义现有的运算符有“副作用”
Prelude> 4*4
<interactive>:169:1:
Non type-variable argument in the constraint: Num [a]
(Use FlexibleContexts to permit this)
When checking that `it' has the inferred type
it :: forall a. Num [a] => [a]
或者python 的解释是复制列表 n 次(而不是从循环的列表元素中选择 n 个元素)。在这种情况下,您可以将其定义为
(*) :: [a] -> Int -> [a]
(*) xs n = concat $ replicate n xs
Prelude> [0]*4
[0,0,0,0]
Prelude> [0,1]*4
[0,1,0,1,0,1,0,1]
显然,这是一个玩具示例,您可能想为此定义另一个运算符或简单的函数。