gpt4 book ai didi

Haskell 图数据类型表示

转载 作者:行者123 更新时间:2023-12-03 14:27:40 24 4
gpt4 key购买 nike

我想以下列方式在 Haskell 中表示一个图形:

对于每个节点,我想存储它的值和相邻节点的列表。我遇到的问题是我希望将相邻节点存储为对其他节点的引用。

例如,我希望将节点 ny 存储为 („NY“(l p)),其中 l 和 p 是相邻节点,而不是存储为 („NY“(„London“„Paris“))”。
我试过这样的事情:

data Node a = Node { value :: a
, neighbors :: [Node a]
}deriving (Show)

let n1 = Node {value=1, neighbors=[n2]}
let n2 = Node {value=1, neighbors=[n1 n3]}
let n3 = Node {value=1, neighbors=[n2]}

但是我在 let 中遇到了错误。我究竟做错了什么 ?

最佳答案

两个问题:

  • let是一种表达式形式,在顶层编译器需要一个声明形式。
  • 你需要一个单一的绑定(bind)嵌套;通过使用三个 let s,您已将定义拆分为三个单独的范围。

  • 以下代码编译,当我要求 n1 ,我得到了一个无限的字符串打印输出:
    module Letnest 
    where
    data Node a = Node { value :: a
    , neighbors :: [Node a]
    } deriving (Show)

    n1 = Node {value=1, neighbors=[n2]}
    n2 = Node {value=1, neighbors=[n1, n3]}
    n3 = Node {value=1, neighbors=[n2]}

    关于Haskell 图数据类型表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785263/

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