Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Haskell中n个零的列表_List_Haskell_List Comprehension - Fatal编程技术网

List Haskell中n个零的列表

List Haskell中n个零的列表,list,haskell,list-comprehension,List,Haskell,List Comprehension,这可能非常简单,但我不知道如何实现Python的等效功能 [0]*n 在Haskell中,为了得到一个包含n个零的列表 [0]*n 不起作用。我是否必须这样做:[0 | x您可以这样做: λ> take 5 (repeat 0) [0,0,0,0,0] 或者正如@obadz所指出的,这更为简洁: λ> replicate 5 0 [0,0,0,0,0] 我个人不喜欢python语法。*表示乘法,但在您的情况下它会做其他事情。但这只是我的观点:)。您可以自己定义它(作为一个玩具

这可能非常简单,但我不知道如何实现Python的等效功能

[0]*n
在Haskell中,为了得到一个包含n个零的列表

[0]*n
不起作用。我是否必须这样做:
[0 | x您可以这样做:

λ> take 5 (repeat 0)
[0,0,0,0,0]
或者正如@obadz所指出的,这更为简洁:

λ> replicate 5 0
[0,0,0,0,0]

我个人不喜欢python语法。
*
表示乘法,但在您的情况下它会做其他事情。但这只是我的观点:)。

您可以自己定义它(作为一个玩具示例)

所以你可以

Prelude> [0]*5                                                      
[0,0,0,0,0]

Prelude> [0,1]*5
[0,1,0,1,0]
显然,重新定义现有运营商会产生“副作用”

显然,这是一个玩具示例,您可能需要为此定义另一个运算符或简单的函数。

另一种可能性:

import Data.Monoid

zeroes = 5 * [0] where (*) = mtimes

或者
replicate 5 0
*
对列表和整数的作用是相同的;它是重复的加法。
some_list*3==3*some_list==some_list+some_list+some_list
,其中列表加法只是串联。@n.m该评论是对Sibi关于Python语法的评论的回应。@chepner:这确实是一致的不幸的是,它与其他数值运算符的使用非常不一致。请考虑<代码> NoPy.Road([0)] * 3 < /COD>。我想我们将要讨论的问题是,运算符重载与特定类型运算符的扩散(或者甚至特定类型的函数)的利弊。.查看haskell标记信息页面,查找函数和其他有趣的内容:
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]
(*) :: [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]
import Data.Monoid

zeroes = 5 * [0] where (*) = mtimes