haskell - 如何在 Haskell 中创建数字列表
问题描述
我需要创建一个函数来制作一个大小为行和列的板,然后用零填充它。mkBoard 2 3 将使 [[0,0,0],[0,0,0]]
我真的不知道从哪里开始,因为我是 Haskell 编程的新手,我在想这个函数应该是这样的:
mkBoard m n= [m | ???? take n (repeat 0)]
但我不确定这是否是正确的方法。
谢谢您的帮助。
解决方案
正如@arrowd 已经提到的,有一个replicate
用于take n (repeat x)
. 你可以用 来创建你的板子的一行replicate n 0
,然后用这样的行创建板子mkBoard m n = replicate m (replicate n 0)
。
您还可以创建此函数的更通用版本以使用任何值填充该字段:
genericMkBoard :: a -> Int -> Int -> [[a]]
genericMkBoard x m n = replicate m (replicate n x)
mkBoard
并使用部分应用程序定义您的:
mkBoard = genericMkBoard 0
UPD:你也可以让它更符合replicate
(感谢@chepner):
replicate2D m n x = replicate m (replicate n x)
mkBoard m n = replicate2D m n 0
推荐阅读
- postgresql - 如果死锁,让 Postgresql 回滚我的事务
- css - 无法在 React CSS 文件的父类名中使用子类名
- java - 关于在Java中初始化一个新创建的空字符串的问题
- javascript - 如何使用正则表达式删除第二次出现的十进制数
- move - 制作“吃豆人效应”
- java - 如何使用具有触发器的表从 Spring JPA 保存更新的值
- kubernetes - 访问kubernetes api服务器时如何将公共ip添加到X509证书
- ios - 如何从 UIPickerView 中删除封面布局
- python - 为什么我们需要将数据的转置传递给 sklearn StandardScaler()?
- postgresql - 即使没有数据库实例,AWS 也会对 RDS 收费