gpt4 book ai didi

haskell - 在 Haskell 中实现简单的业务模型

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

假设我们有一个非常简单的模型:
Station至少有一个 TrainTrain至少有两个 Station

该模型必须允许检查任何给定火车访问的站点以及检查哪些火车访问特定站点。

如何在 Haskell 中建模?

我是一个 Haskell 新手,所以请纠正我:一旦创建了一个对象,你就不能修改它——你只能基于那个对象创建一个新对象(~不变性)。我对吗?如果是这样的话,
我将不得不使用半初始化对象(在反序列化过程中甚至在单元测试中)创建许多临时变量。

基本上我需要的是一个在 Haskell 中建模领域类的例子 - 在阅读“Learn you a haskell..”之后我仍然不知道如何使用这种语言。

最佳答案

这是一个天真的方法:

data Station = Station Train [Train]
data Train = Train Station Station [Station]

您永远不必创建未初始化的对象。例如,这里有几个示例值:
grandCentral = Station regional [national]
bestWestern = Station regional [national]
regional = Train grandCentral bestWestern []
national = Train grandCentral bestWestern []

但是,这种方法有很多缺点。在 Haskell 的纯子集中观察堆内循环是不可能的,所以更新或使用这些数据是很棘手的。通常的解决方法是显式地为您的指针建模。
type TrainMap   = Map TrainId Train
type StationMap = Map StationId Station
type TrainId = Int -- use newtype for more compiler checks at
type StationId = Int -- the cost of more programmer annoyance
data Train = Train StationId StationId [StationId]
data Station = Station TrainId [TrainId]

关于haskell - 在 Haskell 中实现简单的业务模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076596/

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