我如何获得haskell中元组的索引?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何获得haskell中元组的索引?相关的知识,希望对你有一定的参考价值。

如何获取haskell中的元组列表中元组元素之间最大差异的索引?

maxDiff :: [(Int, Int)] -> Int
maxDiff [(-5, 3), (-20, 20), (21, 33)] == 2
maxDiff [(-5, 3)] == 1
maxDiff [(-5, 3), (-20, 20), (21, 33), (-50, 30)] == 4
答案
maxDiff = snd . minimum . (`zip` [1..]) . map (uncurry (-))
另一答案
看起来像作业。 ;)

import Data.List tupleDiff :: (Int, Int) -> Int tupleDiff (x, y) = abs(x - y) type TupleArray = [(Int, Int)] maxDiff :: TupleArray -> Maybe Int maxDiff tuples = elemIndex maxVal tupleDiffs where tupleDiffs = map tupleDiff tuples maxVal = maximum tupleDiffs main :: IO () main = do print $ maxDiff [(-5, 3), (-20, 20), (21, 33), (-50, 30)]

以上是关于我如何获得haskell中元组的索引?的主要内容,如果未能解决你的问题,请参考以下文章

你如何在 Haskell 中使用模式匹配和元组列表?

Python 等效于 Haskell 的 [1..](索引列表)

Haskell 有列表切片(即 Python)吗?

如何在 Haskell 中解析 IO 字符串?

如何在整个 Web 应用程序堆栈中利用 Haskell 类型安全性?

Haskell:FRP 反应性 Parsec?