gpt4 book ai didi

list - 如何修改嵌套自定义数据类型中的列表值?

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

假设我创建了一个新的数据类型,如下所示:

data Typex = Typex {
level :: Int,
coordinate :: (Int, Int),
connections :: [(Int,(Int,Int),Double)] -- edited to be a tuple
} deriving Show

我想从使用 [[TypeX]] 的上层修改连接。我的自定义类型是否需要嵌套循环、fmap 和仿函数实例,或者您有什么建议?

最佳答案

你可能想要 lenses .

{-# LANGUAGE TemplateHaskell   #-}

import Control.Lens

data Typex = Typex
{ _level :: Int
, _coordinate :: (Int, Int)
, _connections :: [(Int,(Int,Int),Double)]
} deriving Show
makeLenses ''Typex

main :: IO ()
main = print $ [[Typex 0 (0,0) []]
,[Typex 1 (1,1) [], Typex 1 (2,2) []]
,[]]
& ix 1 . ix 0 . connections
%~ ((9,(9,9),pi):)

在此示例中,嵌套列表被索引 (ix) 到中间元素的头部,在该 Typex 值中在 connections 字段上,元素 (9,(9,9),pi) 放在前面。结果:

[[Typex {_level = 0, _coordinate = (0,0), _connections = []}],[Typex {_level = 1, _coordinate = (1,1), _connections = [(9,(9,9),3.141592653589793)]},Typex {_level = 1, _coordinate = (2,2), _connections = []}],[]]

关于list - 如何修改嵌套自定义数据类型中的列表值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60428086/

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