gpt4 book ai didi

haskell - 什么是PHP关联数组的Haskell等价物

转载 作者:行者123 更新时间:2023-12-05 01:27:10 25 4
gpt4 key购买 nike

在 PHP 中我可以这样做:

$array = [
'A' => [1,2,3],
'B' => [4,5,6],
'C' => [7,8,9],
]

PHP 关联数组的 Haskell 等价性是什么?

最佳答案

我的印象是您正在寻找值映射数据结构的键。在那种情况下,Haskell 有 Data.Mapcontainers 提供包裹。它有一些变体,包括 Data.Map.Strict , Data.Map.Lazy , 和 Data.IntMap .

Haskell 的默认映射实现是有序的,并且基于平衡树,这使得操作具有对数 时间复杂度。但是在 unordered-containers 中也有一个散列实现。提供恒定操作时间的包,但您当然不会获得默认的键顺序。

您提供的 PHP 关联数组示例之后的一个简短示例:

import qualified Data.Map.Strict as Map


myMap = Map.fromList [ ('A',[1,2,3])
, ('B',[4,5,6])
, ('C',[7,8,9])
]

-- Looking up an existing key
Map.lookup 'B' myMap
> Just [4,5,6]

-- Looking up a non-existing key
Map.lookup 'Z' myMap
> Nothing

关于如何在 Haskell 中使用 Map 的更多上下文来自 Data.Map 的文档:

import qualified Data.Map.Strict as Map

nums = Map.fromList [(1,"one"), (2,"two"), (3,"three")]

-- Get the English word for the number 3 and 4.
Map.lookup 3 nums
> Just "three"

Map.lookup 4 nums
> Nothing


-- Add (4, "four") to our original map.
moreNums = Map.insert 4 "four" nums

Map.member 4 moreNums
> True


-- Remove the entry for 1 from our original map.
fewerNums = Map.delete 1 nums

Map.toAscList fewerNums
> [(2,"two"),(3,"three")]


-- Create a new map and combine it with our original map.
-- fromList is right-biased: if a key is repeated the rightmost value is taken.
newNums = Map.fromList [(3,"new three"), (4,"new four"), (4,"newer four")]

-- union is left-biased: if a key occurs more than once the value from the
-- left map is taken.
Map.union newNums nums
> fromList [(1,"one"),(2,"two"),(3,"new three"),(4,"newer four")]

关于haskell - 什么是PHP关联数组的Haskell等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69694701/

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