gpt4 book ai didi

haskell - Haskell函数的"Default values"?

转载 作者:行者123 更新时间:2023-12-03 14:40:19 24 4
gpt4 key购买 nike

有什么方法可以预定义函数的输入值,以便用户不必每次都定义它们?

例如,假设我有一个函数“zr”,它返回一个大小为 n 的列表零,这样:

zr 1 = [0]
zr 5 = [0, 0, 0, 0, 0]

等等。

我目前的实现方式是:
zr :: [Int] -> Int -> [Int]
zr x y
| length x == y = x
| otherwise = zr x++[y]

但这并不是特别优雅,因为每次我调用 zr 我都需要包含一个空列表作为参数:
zr [] 5

有任何想法吗?

谢谢!

最佳答案

我认为您正在寻找的是部分应用程序:

zr' :: Int -> [Int]
zr' = zr []

如果 zr是一个接受列表和整数的函数,然后 zr []是一个只接受整数 n 的函数并返回 zr [] n .

在您的情况下, zr显然是一个“临时”函数(你不希望任何人意外调用 zr [1] 4),所以你不妨在本地定义它:
zr :: Int -> [Int]
zr = zr' []
where
zr' :: [Int] -> Int -> [Int]
zr' x y
| length x == y = x
| otherwise = zr' x++[0] y

关于haskell - Haskell函数的"Default values"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23489443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com