【发布时间】:2021-05-02 12:30:15
【问题描述】:
我需要一些有关 Haskell 的帮助。我是haskell的新手。我想找到列表的中间元素,但我想在函数中执行此操作。我试图找到列表的长度和除以 2。但我未能在函数中将列表的长度作为 int 获取。
findListL k = [z | let z = length k]
我尝试了顶部的代码,但失败了。 谁能告诉我怎么做?
【问题讨论】:
-
如果列表有偶数个元素怎么办,比如
[1,2,3,4]? -
相反,您成功地将列表的长度作为函数中的 int 获取。好工作!只是获得它只是目标的一部分。你能用语言说出你想要做的事情吗?一旦您制定了计划,我们或许能够帮助您确定实现具体目标的现有功能(或编写您自己的功能)。 (顺便说一句,对于您提出的直接问题“有人可以告诉我该怎么做吗?”的答案是:“不,我们不会为您完成您的工作。”。)
-
我的目标是将列表的长度作为 int,而不是作为列表。我在我的问题中提到了这一点。我说如果你读了我的问题,我找不到列表的长度,如果我找到了,我会把它除以 2 并得到我的结果。我在传入的解决方案中学到了一种不同的方法,这对我来说是一种新的学习。
-
@fs45:您是否尝试只写
length k而不是将其包装在列表中?findListL k = [z | let z = length k]与findListL k = [length k]相同,如果您不希望将结果包装在列表中,则可以省略该列表,改写为findListL k = length k。要将这个长度分成两半,您可能需要length k `div` 2,用于向下舍入的整数除法,或fromIntegral (length k) / 2用于小数除法,其中fromIntegral从Int转换为小数类型,例如Float或@ 987654332@。Int没有小数除法(/)。