我遇到了以下问题:我有一棵不同类的对象树,其中子类中的操作使父类无效。在命令式语言中,这是微不足道的。例如,在 Java 中:
public class A {
private List<B> m_children = new LinkedList<B>();
private boolean m_valid = true;
public void invalidate() {
m_valid = false;
}
public void addChild(B child) {
m_children.add(child);
child.m_parent = this;
}
}
public class B {
public A m_parent = null;
private int m_data = 0;
public void setData(int data) {
m_data = 0;
m_parent.invalidate();
}
}
public class Main {
public static void main(String[] args) {
A a = new A();
B b = new B();
b.setData(0); //invalidates A
}
}
我如何在 Haskell 中执行上述操作?我无法解决这个问题,因为一旦我在 Haskell 中构造了一个对象,它就无法更改。
如果发布了相关的 Haskell 代码,我将不胜感激。
编辑:我要解决的问题如下:
我有一个编辑文档的应用程序。文档是对象的层次结构。当子对象的属性被修改时,需要将文档设置为无效状态,以便用户知道需要验证文档。