-6ren">
gpt4 book ai didi

Haskell - 获取没有 "!!"的第 n 个元素

转载 作者:行者123 更新时间:2023-12-02 08:21:37 26 4
gpt4 key购买 nike

我需要获取列表的第 n 个元素,但不使用 !! 运算符。我对 Haskell 非常陌生,所以如果您能更详细地回答而不仅仅是一行代码,我将不胜感激。这就是我目前正在尝试的:

nthel:: Int -> [Int] -> Int
nthel n xs = 0
let xsxs = take n xs
nthel n xs = last xsxs

但我得到:解析错误(可能是不正确的缩进)

最佳答案

这里有很多地方有点不对劲,

nthel :: Int -> [Int] -> Int

技术上是正确的,我们真的想要

nthel :: Int -> [a] -> a

所以我们可以在任何列表上使用它(可选)

nthel n xs = 0

你刚才说的是“无论你给nthel什么都返回0”。这显然是错误的。

let xsxs = ...

这不是合法的 haskell。 let ... in ...是一个表达式,不能在顶层使用。

从那里我不太确定它应该做什么。

也许这会帮助你走上正轨

nthelem n [] = <???> -- error case, empty list
nthelem 0 xs = head xs
nthelem n xs = <???> -- recursive case

尝试填写 <???>根据您的最佳猜测,我很乐意为您提供帮助。

或者,您可以使用 Haskell 的“模式匹配”语法。我解释了如何使用列表 here 来做到这一点.

这将我们的上面更改为

nthelem n [] = <???> -- error case, empty list
nthelem 0 (x:xs) = x --bind x to the first element, xs to the rest of the list
nthelem n (x:xs) = <???> -- recursive case

这样做很方便,因为它不需要使用显式 headtail s。

关于Haskell - 获取没有 "!!"的第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15980989/

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